aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* build list filters (#313)Dan Engelbrecht2025-03-195-35/+96
| | | | | - Feature: `zen builds list` command has new options - `--query-path` - path to a .json (json format) or .cbo (compact binary object format) with the search query to use - `--result-path` - path to a .json (json format) or .cbo (compact binary object format) to write output result to, if omitted json format will be output to console
* Missing import statment on dashboard's start page (#314)Martin Ridgers2025-03-192-0/+1
|
* improved reporting on async error (#312)Dan Engelbrecht2025-03-182-8/+17
| | | * report async errors as individual errors
* If a chunk or block write operation results in more than one completed chunk ↵Dan Engelbrecht2025-03-181-88/+155
| | | | sequence, do the additional verifications as async work (#311)
* collapse local writes (#310)Dan Engelbrecht2025-03-182-156/+199
| | | * collapse read/writes during local data copy
* Reduced disk I/O when writing out chunk blocks during download (#309)Dan Engelbrecht2025-03-181-70/+81
|
* improved post upload/download summary (#308)Dan Engelbrecht2025-03-183-420/+690
| | | | | | | | | * added ValidateStatistics and improved post upload summary * improved download statistics * smoother stats update when compressing * better feedback during stream compresss/decompress * don't capture TotalPartWriteCount by reference * disk stats cleanup * multi-test-download overall timer
* fix quoted command lines arguments (#306)Dan Engelbrecht2025-03-1215-182/+391
| | | Handling of quotes and quotes with leading backslash for command line parsing - UE-231677
* Remove spurious '4' in conditional code blockStefan Boberg2025-03-121-12/+12
|
* ProgressBar improvements (#305)Stefan Boberg2025-03-122-2/+42
| | | | | * changed ProgressBar so it doesn't use printf. printf by default is very slow on Windows due to weird buffering behaviour. During a 2 minute build download I profiled 35 CPU seconds inside printf * changed so ProgressBar uses plain output mode if stdout is not a console/tty
* fixes for log timestamps (#304)Stefan Boberg2025-03-125-3/+26
| | | | | | * add GetTimeSinceProcessStart returning time since process start. implemented using https://github.com/maxliani/GetTimeSinceProcessStart/tree/main * fix fractions when using epoch mode. Previously it would show the fraction from the absolute time stamp and not relative to epoch * used GetTimeSinceProcessStart to offset the epoch so that it represents the process spawn time
* fix mac/linux builds command (#303)Dan Engelbrecht2025-03-121-15/+20
| | | * fix linux/mac version of GetModificationTickFromPath and CopyFile
* improved block gen logic (#302)Dan Engelbrecht2025-03-127-457/+599
| | | | | | | - Improvement: Reduced memory usage during upload and part upload validation - Improvement: Reduced I/O usage during upload and download - Improvement: Faster block regeneration when uploading in response to PutBuild/FinalizeBuild - Improvement: More trace scopes for build upload operations - Bugfix: Fixed crash during download when trying to write outside a file range
* async find blocks (#300)Dan Engelbrecht2025-03-111-42/+80
| | | | | | | * put/get build and find blocks while scanning local folder when uploading * changelog * remove redundant move
* Build command tweaks (#301)Stefan Boberg2025-03-117-59/+83
| | | | | | - Improvement: Don't chunk up .mp4 files as they generally won't benefit from deduplication or partial in-place-updates - Improvement: Emit build name to console output when downloading a build - Improvement: Added some debug logging - Bugfix: Logging setup would previously not function correctly when not logging to file
* pick up existing cache (#299)Dan Engelbrecht2025-03-109-887/+1651
| | | | | | - Improvement: Scavenge .zen temp folders for existing data (downloaded, decompressed or written) from previous failed run - Improvement: Faster abort during stream compression - Improvement: Try to move downloaded blobs with rename if possible avoiding an extra disk write - Improvement: Only clean temp folders on successful or cancelled build - keep it if download fails
* partial block fetch (#298)Dan Engelbrecht2025-03-078-402/+907
| | | | | - Improvement: Do partial requests of blocks if not all of the block is needed - Improvement: Better progress/statistics on download - Bugfix: Ensure that temporary folder for Jupiter downloads exists during verify phase
* reduced memory churn using fixed_xxx containers (#236)Stefan Boberg2025-03-0626-199/+377
| | | | | | * Added EASTL to help with eliminating memory allocations * Applied EASTL to eliminate memory allocations, primarily by using `fixed_vector` et al to use stack allocations / inline struct allocations Reduces memory events in traces by close to a factor of 10 in test scenario (starting editor for project F)
* Add trace support for zen CLI command (#296)Stefan Boberg2025-03-054-37/+210
| | | | - This change adds support for `--trace`, `--tracehost` and `--tracefile` command arguments to enable and control tracing to Insights - It also adds profiling scopes primarily to build download command related code
* streaming compress (#295)Dan Engelbrecht2025-03-053-37/+289
| | | | - Improvement: Validate hash of decompressed data inline with streaming decompression - Improvement: Do streaming compression of large blobs to improve memory and I/O performance
* do direct update of stats numbers (#294)Dan Engelbrecht2025-03-041-24/+13
|
* stream decompress (#293)Dan Engelbrecht2025-03-043-57/+337
| | | | * clean up latency parameters and slow down rate updates * add DecompressToStream
* limit and validate responses before logging the text (#292)Stefan Boberg2025-03-044-1/+110
| | | Improvement: When logging HTTP responses, the body is now sanity checked to ensure it is human readable, and the length of the output is capped to prevent inadvertent log bloat
* refactor use chunk sequence download (#291)Dan Engelbrecht2025-03-035-552/+910
| | | | | | | | | | | | | | | | | | | | | | * work on chunk sequences on download, not paths * write chunksequences to .tmp file and move when complete * cleanup * Added on the fly validation `zen builds download` of files built from smaller chunks as each file is completed Added `--verify` option to `zen builds upload` to verify all uploaded data once entire upload is complete Added `--verify` option to `zen builds download` to verify all files in target folder once entire download is complete Fixed/improved progress updated Multithreaded part validation * added rates to Write Chunks task * b/s -> bits/s * dont validate partial content as complete payload * handle legacy c# builds
* builds download incremental (#290)Dan Engelbrecht2025-03-014-629/+635
| | | | | * incremental download * merge rebuild state and output state building * fix writing when > 1 zero size file
* improve error handling (#289)Dan Engelbrecht2025-02-288-974/+1036
| | | | | | | | * clearer errors * quicker abort * handle deleted local files * simplify parallellwork error handling * don't finish progress on destructor - gives wrong impression * graceful ctrl-c handling
* Zs/auth bad function fix (#287)Zousar Shaker2025-02-272-7/+5
| | | | | | | | | * Describe fix in changelog * remove JupiterClient::m_TokenProvider --------- Co-authored-by: zousar <[email protected]> Co-authored-by: Dan Engelbrecht <[email protected]>
* Fix bug causing crash if large file was exact multiple of 256KB when using ↵Dan Engelbrecht2025-02-261-1/+1
| | | | zen builds command (#286)
* clang-format fixStefan Boberg2025-02-261-1/+1
|
* added <chrono> include to zentest-appstub.cppStefan Boberg2025-02-261-0/+1
|
* builds upload command (#278)Dan Engelbrecht2025-02-2623-61/+9108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Feature: **EXPERIMENTAL** New `zen builds` command to list, upload and download folders to Cloud Build API - `builds list` list available builds (**INCOMPLETE - FILTERING MISSING**) - `builds upload` upload a folder to Cloud Build API - `--local-path` source folder to upload - `--create-build` creates a new parent build object (using the object id), if omitted a parent build must exist and `--build-id` must be given - `--build-id` an Oid in hex form for the Build identifier to use - omit to have the id auto generated - `--build-part-id` and Oid in hex form for the Build Part identifier for the folder - omit to have the id auto generated - `--build-part-name` name of the build part - if omitted the name of the leaf folder name give in `--local-path` - `--metadata-path` path to a json formatted file with meta data information about the build. Meta-data must be provided if `--create-build` is set - `--metadata` key-value pairs separated by ';' with build meta data for the build. (key1=value1;key2=value2). Meta-data must be provided if `--create-build` is set - `--clean` ignore any existing blocks of chunk data and upload a fresh set of blocks - `--allow-multipart` enable usage of multi-part http upload requests - `--manifest-path` path to text file listing files to include in upload. Exclude to upload everything in `--local-path` - `builds download` download a folder from Cloud Build API (**INCOMPLETE - WILL WIPE UNTRACKED DATA FROM TARGET FOLDER**) - `--local-path` target folder to download to - `--build-id` an Oid in hex form for the Build identifier to use - `--build-part-id` a comma separated list of Oid in hex for the build part identifier(s) to download - mutually exclusive to `--build-part-name` - `--build-part-name` a comma separated list of names for the build part(s) to download - if omitted the name of the leaf folder name give in `--local-path` - `--clean` deletes all data in target folder before downloading (NON-CLEAN IS NOT IMPLEMENTED YET) - `--allow-multipart` enable usage of multi-part http download reqeusts - `builds diff` download a folder from Cloud Build API - `--local-path` target folder to download to - `--compare-path` folder to compare target with - `--only-chunked` compare only files that would be chunked - `builds fetch-blob` fetch and validate a blob from remote store - `--build-id` an Oid in hex form for the Build identifier to use - `--blob-hash` an IoHash in hex form identifying the blob to download - `builds validate part` fetch a build part and validate all referenced attachments - `--build-id` an Oid in hex form for the Build identifier to use - `--build-part-id` an Oid in hex for the build part identifier to validate - mutually exclusive to `--build-part-name` - `--build-part-name` a name for the build part to validate - mutually exclusive to `--build-part-id` - `builds test` a series of operation that uploads, downloads and test various aspects of incremental operations - `--local-path` source folder to upload - Options for Cloud Build API remote store (`list`, `upload`, `download`, `fetch-blob`, `validate-part`) - `--url` Cloud Builds URL - `--assume-http2` assume that the builds endpoint is a HTTP/2 endpoint skipping HTTP/1.1 upgrade handshake - `--namespace` Builds Storage namespace - `--bucket` Builds Storage bucket - Authentication options for Cloud Build API - Auth token - `--access-token` http auth Cloud Storage access token - `--access-token-env` name of environment variable that holds the Http auth Cloud Storage access token - `--access-token-path` path to json file that holds the Http auth Cloud Storage access token - OpenId authentication - `--openid-provider-name` Open ID provider name - `--openid-provider-url` Open ID provider url - `--openid-client-id`Open ID client id - `--openid-refresh-token` Open ID refresh token - `--encryption-aes-key` 256 bit AES encryption key for storing OpenID credentials - `--encryption-aes-iv` 128 bit AES encryption initialization vector for storing OpenID credentials - OAuth authentication - `--oauth-url` OAuth provier url - `--oauth-clientid` OAuth client id - `--oauth-clientsecret` OAuth client secret - Options for file based remote store used for for testing purposes (`list`, `upload`, `download`, `fetch-blob`, `validate-part`, `test`) - `--storage-path` path to folder to store builds data - `--json-metadata` enable json output in store for all compact binary objects (off by default) - Output options for all builds commands - `--plain-progress` use plain line-by-line progress output - `--verbose`
* improvements and infrastructure for upcoming builds api command line (#284)Dan Engelbrecht2025-02-2521-271/+399
| | | | | | | | | | | | | | * add modification tick to filesystem traversal * add ShowDetails option to ProgressBar * log callstack if we terminate process * handle chunking if MaxSize > 1MB * BasicFile write helpers and WriteToTempFile simplifications * bugfix for CompositeBuffer::IterateRange when using DecompressToComposite for actually comrpessed data revert of earlier optimization * faster compress/decompress for large disk-based files * enable progress feedback in IoHash::HashBuffer * add payload validation in HttpClient::Get * fix range requests (range is including end byte) * remove BuildPartId for blob/block related operations in builds api
* strip leading path separator when creating workspace shares (#285)Dan Engelbrecht2025-02-241-1/+15
|
* move WriteToTempFile to basicfile.h (#283)Dan Engelbrecht2025-02-123-63/+111
| | | add helper constructors to BasicFile
* moving and small refactor of chunk blocks to prepare for builds api (#282)Dan Engelbrecht2025-02-1214-243/+334
|
* improved builds api interface in jupiter (#281)Dan Engelbrecht2025-02-125-163/+518
| | | | | * multipart upload/download iterface in jupiter * review fixes
* Fix workspace shares reply array (#280)Tomasz Obrębski2025-02-031-3/+3
| | | | Workspace shares were sent in the '/ws' reply as repeating objects 'shares' instead of a 'shares' array of objects
* handle special backslash followed by quote for paths (#279)Dan Engelbrecht2025-01-221-4/+16
|
* Add multithreading directory scanning in core/filesystem (#277)Dan Engelbrecht2025-01-2216-131/+290
| | | | | | add DirectoryContent::IncludeFileSizes add DirectoryContent::IncludeAttributes add multithreaded GetDirectoryContent use multithreaded GetDirectoryContent in workspace folder scanning
* jupiter code cleanup (#276)Dan Engelbrecht2025-01-2216-1102/+1007
| | | | | | | * cleanup jupiter * move jupiter files to separate folder * CloudCache -> Jupiter * split up jupiter files * kill redundant JupiterAccessTokenProvider
* add missing statsd.enabled and gc.projectstore.duration.seconds (#275)Dan Engelbrecht2025-01-161-10/+13
| | | | | - Bugfix: Fix parsing of workspace options in Lua config - Bugfix: Add missing Lua option for option `--gc-projectstore-duration-seconds` - Bugfix: Add missing Lua mapping option to `--statsd` command line option
* export oplog to zen target url (#274)Dan Engelbrecht2025-01-162-4/+5
| | | | * fix oplog target url for oplog export to remote zenserver * verify that chunking is allowed before chunking loose files
* move basicfile.h/cpp -> zencore (#273)Dan Engelbrecht2025-01-1642-53/+54
| | | | | | move jupiter.h/cpp -> zenutil move packageformat.h/.cpp -> zenhttp zenutil now depends on zenhttp instead of the inverse
* Suppress progress report callback if oplog import detects zero op oplog (#271)Dan Engelbrecht2025-01-136-11/+28
| | | | * Suppress progress report callback if oplog import detects oplog with zero ops * output error code when catching system errors
* increase limit for mmap path to 8kb (#270)Dan Engelbrecht2024-12-191-1/+1
|
* don't add overhead of verifying oplog presence on disk for "getchunks" rpc ↵Dan Engelbrecht2024-12-181-3/+5
| | | | call (#269)
* Miscellaneous minor LLM fixes (#268)v5.5.17-pre0Stefan Boberg2024-12-174-4/+9
| | | | | | | With this change, LLM tags are assigned using the name,parent tuple rather than just by name only. This allows tag hierarchies like `cache/store` and `project/store` which would previously get collapsed into the first pair seen when registering the `store` tag. This PR also adds some more LLM tag annotations to more accurately associate memory allocations with subsystems In addition, this PR also tweaks the frequency of timer marker events to increase the resolution in Insights and avoid some cases of Insights deciding that marker events are too far apart since we don't allocate as frequently as UE tends to.
* batch fetch record cache values (#266)Dan Engelbrecht2024-12-173-21/+90
| | | | | | - Improvement: Batch fetch record attachments when appropriate - Improvement: Reduce memory buffer allocation in BlockStore::IterateBlock - Improvement: Tweaked BlockStore::IterateBlock logic when to use threaded work (at least 4 chunks requested) - Bugfix: CasContainerStrategy::IterateChunks could give wrong payload/index when requesting 1 or 2 chunks
* remove all referenced attachments in op from pending chunk references (#267)Dan Engelbrecht2024-12-171-5/+7
|
* more memory tagging and fixes (#263)Stefan Boberg2024-12-169-8/+272
| | | This change adds more instrumentation for memory tracking, so that as little as possible comes through as Unknown in Insights analysis.