Commit Graph

67 Commits

Author SHA1 Message Date
Ericson Soares
33ae4ee396 More ingestion metrics 2024-10-23 13:14:18 -03:00
Ericson Soares
b447bb5766 Next attempt at ingestion optimization 2024-10-23 03:01:04 -03:00
Ericson Soares
79be4a58c6 Introducing partial indexes on crdt_operations and more optimization on ingestion 2024-10-22 12:52:23 -03:00
Ericson Soares
be7646e43b More optimization attempts and collecting metrics 2024-10-22 01:39:44 -03:00
Ericson Soares
b7462eb555 New ingester optimization attempt 2024-10-22 00:33:34 -03:00
Ericson Soares
e72baf6935 bruh 2024-10-21 23:20:34 -03:00
Ericson Soares
31f954f38f Optimize and fix attempt at cloud ingester 2024-10-21 22:27:09 -03:00
Ericson Soares
6a69f5f8ef Update sync messages push and pull
Also fix scalability issues on sync design
2024-10-19 02:48:27 -03:00
Ericson Soares
f0a76d3332 More backfill tweaks 2024-10-15 03:23:50 -03:00
Ericson Soares
ed5c19b5ce Can't backfill instance data as it isn't synced anyway 2024-10-15 03:08:44 -03:00
Ericson Soares
cb8c29ce3d Tweaking backfill 2024-10-15 03:01:27 -03:00
Ericson Soares
2bb06d6317 Many tweaks to improve sync responsiveness and observability 2024-10-14 23:39:52 -03:00
Ericson Soares
ead5393e6e Ingest sync ops in correct order 2024-10-08 14:45:14 -03:00
Ericson Soares
3208ef5dd2 Change database to use device id on everything instead of pub_id 2024-10-07 22:38:45 -03:00
Ericson Soares
70ea030c97 Rust fmt 2024-09-29 02:08:59 -03:00
Ericson Soares
2f270cca2a Ingester actor 2024-09-09 16:50:05 -03:00
Ericson Soares
9f8005c479 Relating tables to device 2024-09-06 23:53:35 -03:00
Ericson Soares
0ac38b6845 Tweak crdt ops compression and use it on cloud sync 2024-09-06 21:18:22 -03:00
Arnab Chakraborty
278fccba0f Formatting 2024-09-06 10:24:34 -04:00
Ericson Soares
25f0f4fb1a Sender actor for cloud sync messages 2024-08-30 03:34:03 -03:00
Ericson Soares
76cba5226d More tweaks on sync subcrate and other fixes 2024-08-27 23:45:05 -03:00
Ericson Soares
4bf8db02f7 Make core compile again 2024-08-27 17:01:42 -03:00
Ericson Soares
a068ca7c7b Some tweks to simplify sync subcrate
Initial work to port cloud sync system to new cloud services
2024-08-23 23:42:51 -03:00
Ericson "Fogo" Soares
2d19fad2eb [ENG-1793] Introduce error handling for sd-core-sync crate (#2556)
* Error handling for sd-core-sync crate
Also a bunch of tweaks and fixes

* Update core.ts

* Auto format

* Comment out background_processing_percentage on frontend too
 - Update rust version in contributing

* Trying to avoid data loss on actor stop

* Stronger linter on sync generator

* Stronger lint on sync subcrate

* Clean back tasks.json file

* TS typechecking

* Autoformat

* Add more verbose errors for Cloud REST API

* Removing some comments

Copilot is fun sometimes lol

* Properly stopping actors

* Fix ingest stop

* Racing on stop for actors

* Error conversion from merge with main

---------

Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Arnab Chakraborty <11457760+Rocky43007@users.noreply.github.com>
2024-07-16 22:30:35 +00:00
Ericson "Fogo" Soares
c0d736453e [ENG-1775] Scan location using new jobs (#2476)
* First draft on task system usage, still missing job system

* Scan location roughly working, a ton of stuff to fix yet

* Updating some deps due to crashes and bugs

* Exposing non critical errors to frontend

* Getting active job reports from job system

* Using boxed opaque type to avoid a downcast issue with generics

* Task system issues discovered on race conditions

* Enable debug

* Fix job report in the job manager

* Fix race condition on steal tasks

* Fixed race condition on task suspend

* Some fixes on job progress reporting and save

* Fixed many race conditions and a hard deadlock
Also some progress report polishing

* Ignore .ts and .mts video files for now

* Some better logs

* bruh

* Internal deadlocks and excess of communication in the task system
- Also better logs

* Bunch of fixes and optimizations

* WIP at fixing file identifier

* Fixed file identifier job
- still need to work on its progress report frontend

* A bunch of polishing

* Fixed some bugs and did more polishing

* Cleanup

* Bridging old and new job systems

* A ton of fixes

* A bunch of bugs related to shutdown and resume

* Indexer and watcher bugs

* Log normalizing

* Fixing CI

* Change error! to warn! on non critical errors log

* Fix redirect to new location

* Type annotation

* Bogus merge resolution on cargo lock
2024-06-17 21:30:57 +00:00
Vítor Vasconcellos
c0540b343d Clean up and update rust dependencies (#2544)
* Clean up and update rust dependencies

* Attempt to fix Windows Error
2024-06-10 19:44:00 +00:00
Brendan Allan
ded0779718 [ENG-1776] Delete cloud ops after they've been ingested (#2512)
* delete cloud ops after they've been ingested

* give wait_tx to p2p sync ingest

* remove Ingested event

* add sync docs for setting relation fields

* Update core/crates/sync/README.md

Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>

---------

Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
2024-05-31 06:54:22 +00:00
Oscar Beaumont
e123305091 Serve files over p2p (#2523)
* serve files over p2p

* include location instance id in sync

* Fix P2P addressing?

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2024-05-30 22:07:28 +08:00
Brendan Allan
3163fc83f3 Make sync ingest setting public (#2485)
make sync ingest setting public
2024-05-14 08:38:00 +00:00
Vítor Vasconcellos
92a5817eae Media metadata extraction & Thumbnailer rework (#2285)
* initial ffprobe commit

* Working slim down version ffprobe

* Auto format ffprobe and deps source

* Remove show_pixel_formats logic
- Fix do_bitexact incorrect check in main after last changes
- Fix some clangd warning

* Remove show_* and print_format options and their respective logic

* Rework ffprobe into simple_ffprobe
- Simplify ffprobe logic into a simple program that gather and print a media file metadata

* Reduce the amount of ffmpeg log messages while generating thumbnails

* Fix completly wrong comments

* mend

* Start modeling ffmpeg extracted metadata on schema
 - Start porting ffprobe code to rust
 - Rename some references to media_data to exif_data

* Finish modeling media info data
 - Add MediaProgram, MediaStream, MediaCodec, MediaVideoProps, MediaAudioProps, MediaSubtitleProps to Schema
 - Fix simple_ffproble to use its custom print_codec, instead of ffmpeg's impl

* Add relation between MediaInfo and FilePath
 - Remove shared properties from MediaInfo and related structs
 - Implement Iterator for FFmpegDict

* Fix and update schema

* Data models and start populating MediaInfo in rust

* Finish populating media info, chapters and program

* Improve FFmpegFormatContext data raw pointer access
 - Implement stream data gathering

* Impl FFmpegCodecContext, retrieve codec information
 - Improve some unsafe pointer uses
 - Impl from FFmpegFormatContext to MediaInfo conversion

* Fix FFmpegDict Drop

* Fix some crago warnings

* Impl retrieval of video props
 - Fix C char* to Rust String convertion

* Impl retrieval of audio and subtitle props
 - Fill props for MediaCodec

* Remove simple_ffprobe now that the Rust impl is done

* Fix schema to match actually retrieved media info
 - Fix import some FFmpeg constants instead of directly using values

* Rework movie_decoder
 - Re-implement create_scale_string and add support anamorphic video
 - Improve C pointer access for FFmpegFormatContext and FFmpegCodecContext
 - Use newer FFmpeg abstractions in movie_decoder

* Fix incorrect props when initializing MovieDecoder

* Remove unecessary lifetimes

* Added more native wrappers for some FFmpeg native objects used in movie_decoder

* Remove FFmpegPacket
 - Some more improvements to movie_decoder

* WIP

* Some small fixes

* More fixes
Rename movie_decoder to frame_decoder
Remove more references to film_strips

* fmt

* Fix duplicate migration for job error changes

* fix rebase

* Solving segfaults, fuck C lang

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Update rust to version 1.77
 - Pin rust version with rust-toolchain.toml
 - Change from dtolnay/rust-toolchain to IronCoreLabs/rust-toolchain for rust-toolchain support
 - Remove unused function and imports
 - Replace most CString uses with new c literal string

* More segfault solving and other minor fixes

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Fix ffmpeg rotation filter breaking portrait video thumbnails #2150
 - Plus some other misc fixes

* Auto format

* Retrieve video/audio metadata on frontend

* Auto format

* First draft on ffmpeg data save on db

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Fix some incorrect changes to prisma schema

* Some fixes for the FFmpegData schema
 - Expand logic to save FFmpegData to db

* A ton of things

Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>

* Integrating ffmpeg media data in jobs and API

* Rspc can't BigInt

* 🙄

* Add initial ffmpeg metadata entries to Inspector
 - Fix ephemeral metadata api to match the files metadata api call

* Fix Inspector not showing ffmpeg metadata

* Add bitrate, start time and chapters video metadata to Inspector
- Fix backend BigInt conversion incorrectly using i32 instead of u32
- Change FFmpegFormatContext/FFmpegMetaData bit_rate to i64
- Rename byteSize to humanizeSize
- Expand humanizeSize logic to allow handling bits and Binary units
- Move capitalize to @sd/client utils

* Solving some issues

* Fix ffmpeg probe getting incorrect stream id and breaking database unique constraint
 - Fix humanizeSize breaking when receiving floating numbers
 - Fix incorrect equality in StatCard
 - Fix unhandled error in Dialog when trying to remove an unknown dialog

* fmt

* small improvements
 - Remove some unecessary recursion_limit directive
 - Remove unused app_image releated functions
 - Fix metadata query enabled flag

* Add migration for ffmpeg media data

* Fix cypress test

* Requested changes

* Implement feedback
 - Update locale keys for all languages
 - Add pnpm command to update all language keys

* Fix thumb reactivity in non indexed locations

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
Co-authored-by: Vítor Vasconcellos <HeavenVolkoff@users.noreply.github.com>
2024-05-09 02:20:28 +00:00
Vítor Vasconcellos
d4f74aecd0 Fix CI (#2461)
Use native-tls-vendored for reqwest
 - Update prisma-client-rust
 - Fix mock_instance test
 - Clippy + fmt
 - Improve error handling when uninstall i386 libs in setup-system action
2024-05-08 05:04:25 +00:00
Brendan Allan
63522fc456 Sync settings page (#2460)
sync settings page
2024-05-07 07:39:22 +00:00
Brendan Allan
dee23147d8 Batch ingest sync operations (#2378)
batch ingest sync operations
2024-04-24 08:26:50 +00:00
Brendan Allan
8aec6073a5 Group create and initial update operations into Create (#2329)
* ignore update after delete in sync

* Group create and initial update operations into Create

* fix ts

* fix sync generator

* fix sync debug route

* oops
2024-04-18 03:53:16 +00:00
Brendan Allan
e1561bb394 ignore update after delete in sync (#2327) 2024-04-17 04:57:45 +00:00
Brendan Allan
5419f5cb9a [ENG-1740] Add sempahore for generating sync operation timestamps (#2335)
add sempahore for generating sync operation timestamps
2024-04-16 08:14:08 +00:00
Brendan Allan
e0401a1910 [ENG-1722] Numeric sync model IDs (#2298)
* numeric sync model ids

* migration

* fix test compilation
2024-04-11 03:46:30 +00:00
Ericson "Fogo" Soares
b2bee3d223 [ENG-1628] Write new indexer with the task system (#2161)
* Moving file-path-helper to a sub-crate on core

* Parallel walker tested and working

* Change inner core crate names to sd-core-* naming scheme

* Moving stuff around

* Save and Update tasks for the new indexer job

* Some initial drafts on the new job system

* More drafts on job system

* Changing walker task to a more explicit state machine
Also drafting more of job system

* More drafting on job resume

* Completed the draft on job system inner workings

* New job context abstraction to decouple library stuff from job system

* Properly use composition on task dispatcher

* First draft on indexer job

* Job serialization

* Handling ancestors in the distributed walker for indexer

* Saving computed directories sizes on a location to db

* Enable a way to check if jobs are running in a location

* Progress reporting on indexer job

* Reorganizing modules

* Shallow indexer

* Rust fmt

* Attempting windows CI fix

* Attempting windows CI fix again

* Attempting windows CI fix again
2024-04-08 14:32:44 +00:00
Brendan Allan
1609310d6d [ENG-1674] fix request drop test and add write_ops test (#2252)
fix request drop test and add write_ops test
2024-03-27 06:40:57 +00:00
Brendan Allan
7f8dfbc793 [ENG-1691] Sync status subscription (#2246)
* sync status subscription

* clippy
2024-03-26 07:26:37 +00:00
Vítor Vasconcellos
d6f899a93d Fix a couple of tests after #2218 (#2219)
- Fix some rust warnings
2024-03-19 02:23:42 +00:00
Brendan Allan
a82dc72a77 fix cloud sync and operations (#2218)
* fix cloud sync and operations

* remove some logs

* cleanup
2024-03-18 08:51:16 +00:00
Brendan Allan
d93367316c add message request drop test (#2201)
* Fix sync tests

* fix build

* add message request drop test

* fix: clippy

---------

Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
2024-03-13 22:16:51 +00:00
Brendan Allan
95786c1cbb Fix sync tests (#2194)
* Fix sync tests

* fix build
2024-03-13 05:34:14 +00:00
Brendan Allan
a434379d01 move CompressedCRDTOperation and add docs around sync (#2188) 2024-03-11 09:35:53 +00:00
Brendan Allan
00d19decab switch sync to msgpack instead of json (#2164)
* switch sync to msgpack instead of json

* use rmpv

* more rmpv

* use msgpack in cloud

* receive operations as msgpack
2024-03-06 10:15:29 +00:00
Brendan Allan
c72111d30e paginate sync backfill (#2163)
* paginate sync backfill

* add backfill timeout

* use gt instead of gte
2024-03-06 07:13:44 +00:00
Brendan Allan
fd8b0c95d4 [ENG-1613] Enable sync operation generation with backfill (#2128)
Enable sync operation generation with backfill
2024-02-27 09:37:34 +00:00
Brendan Allan
bfd6e813c0 media data sync (#2102)
* basic sync operation backfill

* media data sync

* sync entry helpers

* fix sync generator

* nicer

* re-add key_id
2024-02-21 11:42:10 +00:00
Brendan Allan
25f9f03010 Basic sync operation backfill (#2101)
* basic sync operation backfill

* no changes
2024-02-20 09:22:34 +00:00