| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
- Improvement: Add file and line to ASSERT exceptions
- Improvement: Catch call stack when throwing assert exceptions and log/output call stack at important places to provide more context to caller
|
| |
|
|
|
|
| |
- Bugfix: Fix log of Success/Failure for oplog import
- Improvement: Use HttpClient when doing oplog export/import with a zenserver as a remote target. Includes retry logic
- Improvement: Increase the retry count to 4 (5 attempts in total) when talking to Jupiter for oplog export/import
|
| |
|
|
|
| |
characters (#32)
* Fix sentry using wrong folder path when data path contains non-ascii characters
|
| |
|
|
|
|
| |
`/prj/{project}/oplog/{log}/chunkinfos` and `/prj/{project}/oplog/{log}/files` (#30)
- Improvement: Use multithreading to fetch size/rawsize of entries in `/prj/{project}/oplog/{log}/chunkinfos` and `/prj/{project}/oplog/{log}/files`
- Improvement: Add `GetMediumWorkerPool()` in addition to `LargeWorkerPool()` and `SmallWorkerPool()`
|
| |
|
|
|
|
|
|
| |
- Improvement: It is now possible to control which fields to include in `/prj/{project}/oplog/{log}/chunkinfos` request by adding a comma delimited list of filed names for `fieldnames` parameter
- Default fields are: `id`, `rawhash` and `rawsize` (translates to `?fieldnames=id,rawhash,rawsize`)
- Use `?fieldnames=*` to get all the fields
- Improvement: It is now possible to control which fields to include in `/prj/{project}/oplog/{log}/files` request by adding a comma delimited list of filed names for `fieldnames` parameter
- Default fields are: `id`, `clientpath` and `serverpath` (translates to `?fieldnames=id,clientpath,serverpath`), `filter=client` only applies if `fieldnames` is not given as a parameter
- Use `?fieldnames=*` to get all the fields
|
| |
|
|
| |
`/prj/{project}/oplog/{log}/chunkinfos` (#27)
|
| | |
|
| |
|
| |
* fix order of parametes in block check result message
|
| |
|
|
|
|
|
| |
* Add HttpServerRequest::Decode to decode http request parameters
* Add support to filter projectstore `entries` request using the `fieldfilter` where the wanted fields are comma (,) delimited
* Add support for responding with compressed payloads for projectstore `entries` requests by adding AcceptType `compressed-binary` to the request header
* Add support for responding with compressed payloads for projectstore `files` requests by adding AcceptType `compressed-binary` to the request header
* Add support for responding with compressed payloads for projectstore `chunkinfo` requests by adding AcceptType `compressed-binary` to the request header
|
| | |
|
| |
|
|
| |
* Don't encode filesystem path to UTF8 unless stored in compactbinary string
* Be consistent where we encode/decode paths to UTF8
|
| |
|
|
|
|
| |
- Improvement: Add limit to the number of times we attempt to finalize and exported oplog
- Improvement: Switch to large thread pool when executing oplog export/import
- Improvement: Clean up reporting of missing attachments in oplog export/import
- Improvement: Remove double-reporting of abort reason for oplog export/import
|
| | |
|
| |
|
|
|
| |
* Add HasAttachments to RemoteProjectStore so we can query if attachment blocks actually exist
* use individual requests for compressed blob check in Jupiter
* remove weird 1000.5 to 1000.0 when converting seconds to milliseconds
|
| |
|
|
|
| |
- Improvement: Delay exiting due to no sponsor processes by one second to handle race conditions
- Improvement: Safer IsProcessRunning check
- Improvement: make sure we can RequestApplicationExit safely from any thread
|
| | |
|
| |
|
|
|
| |
* Add CompressedBuffer::GetRange that references source data rather than make a memory copy
* Use Compressed.CopyRange in project store GetChunkRange
* docs for CompressedBuffer::CopyRange and CompressedBuffer::GetRange
|
| |
|
|
|
| |
* Add ability to specify a json file for cloud access token
OidcToken.exe in UE can be asked to produce such a file with the -OutFile option
* avoid division by zero when reporting progress
|
| |
|
| |
* add a retry when trying to create the lock file if UE is trying to read it at the same time
|
| |
|
|
|
| |
* make sure zenserver reacts and exist on SIGTERM signal
* add zen tag to all runners
* temp disable mac codesigning
|
| |
|
|
|
| |
- Bugfix: Install Ctrl+C handler earlier when doing `zen oplog-export` and `zen oplog-export` to properly cancel jobs
- Improvement: Add ability to block a set of CAS entries from GC in project store
- Improvement: Large attachments and loose files are now split into smaller chunks and stored in blocks during oplog export
|
| |
|
|
|
|
|
| |
- Improvement: Add zenhttp-test and zenutil-test
- Improvement: Moved cachepolicy test to cachepolicy.cpp
- Improvement: Renamed cachestore tests from z$ to cachestore
- Improvement: Moved test linking so test for a lib is linked by <lib>-test
- Improvement: Removed HttpRequestParseRelativeUri in httpstructuredcache.cpp and use the one in cacherequests.h instead
|
| |
|
|
| |
* Make sure WriteFile() does not leave incomplete files
* use TemporaryFile and MoveTemporaryIntoPlace to avoid leaving partial files on error
|
| |
|
|
|
| |
exceptions further (#662)
Bugfix: We must not throw exceptions to calling function until all async work we spawned has returned
|
| |
|
| |
* remove reference caching
|
| |
|
|
|
| |
* move structuredcachestore tests to zenstore-test
* Don't materialize entire files when hashing if it is a large files
* rewrite CompositeBuffer::Mid to never materialize buffers
|
| |
|
|
| |
added ops are detected (#652)
|
| |
|
|
|
|
|
|
|
| |
* Save large compressed large attachments to temporary files on disk
* bump oplog block max size up to 64Mb again
* Make sure CompositeBuffer::AppendBuffers actually moves inputs when it should
* removed parallell execution of fetching payload for block assembly
it was not actually helping and added complexity
* make sure we move/release payload buffers as soon as possible
* make sure we don't read in full large attachments to memory when computing hash
|
| |
|
|
|
|
|
| |
- Improvement: Speed up oplog export by fetching/compressing big attachments on demand
- Improvement: Speed up oplog export by batch-fetcing small attachments
- Improvement: Speed up oplog import by batching writes of oplog ops
- Improvement: Tweak oplog export default block size and embed size limit
- Improvement: Add more messaging and progress during oplog import/export
|
| |
|
|
| |
input (#648)
|
| |
|
| |
fixes rare race condition when using RPC recording for long periods of time
|
| |
|
| |
* Only try to traverse a objectstore bucket if it really exists
|
| |
|
|
|
|
| |
- Improvement: More details in oplog import/export logs
- Improvement: Switch from Download to Get when fetching Refs from Jupiter as they can't be resumed anyway and streaming to disk is redundant
- Bugfix: Make sure we clear read callback when doing Put in HttpClient to avoid timeout due to not sending data when reusing sessions
- Bugfix: Respect `--ignore-missing-attachments` in `oplog-export` command when loose file is missing on disk
|
| |
|
|
| |
* make sure we properly convert compact-binary results to text when receiving errors
* log fix
|
| |
|
|
|
|
|
| |
* add ignore-missing-attachments option to oplog export (debugging tool)
* add more status codes to do retry for in http client
* add missing X-Jupiter-IoHash header for jupiter PutRef
* reduce oplog block size to reduce amount of redundant chunks to download
* improved logging
|
| |
|
|
|
|
|
| |
- Improvement: Refactored Jupiter upstream to use HttpClient
- Improvement: Added retry and resume logic to HttpClient
- Improvement: Added authentication support to HttpClient
- Improvement: Clearer logging in GCV2 compact of FileCas/BlockStore
- Improvement: Size details in oplog import logging
|
| |
|
|
| |
* improve feedback from oplog import/export
* improve oplog save performance
|
| | |
|
| |
|
| |
* get more detailed error messages from jupiter upstream
|
| |
|
| |
jobqueue - add AbortReason and properly propagate error when running async command
|
| | |
|
| |
|
|
|
|
| |
* moved all RPC processing from HttpStructuredCacheService into separate CacheRpcHandler class in zenstore
* move package marshaling to zenutil. was previously in zenhttp/httpshared but it's useful in other contexts as well where we don't want to depend on zenhttp
* introduced UpstreamCacheClient, this provides a subset of functions on UpstreamCache and lives in zenstore
|
| | |
|
| |
|
|
| |
`xmake config -zentrace=n` would previously not build cleanly
|
| |
|
|
|
|
|
|
|
| |
* fix JobQueue test threading issue. The inner job queued with `QueueJob` would reference `I` from inside the captured closure which would subsequently disappear
* made sure application exit is thread safe
* don't try to access string data out of bounds
* keep-alive flag is accessed from multiple threads
* fix memory leaks in Zen upstream client code
* TSAN fixes for Event
|
| |
|
| |
would previously index into a reserved-but-not-sized vector which is bad but not crash-inducing bad
|
| |
|
|
|
| |
* ensure all access to m_Entries is done while holding lock
* RPC recorder concurrency fixes - setup/teardown of recorder needs to be done while holding an exclusive lock. Calls into recorder should be done while holding a shared lock.
|
| |
|
| |
* Don't use copy of Payloads array when fetching memcached payload in GC
|
| |
|
|
|
| |
* Adding some more trace scopes for better visiblity
* Removed spammy trace scope when replaying oplogs
* Remove "::Disk" from trace scopes - redundant now that we have merge disk and memory layers
|
| |
|
|
|
| |
this also adds a central, shared folder for storing information which may be found by any instance on the host. The directory is currently located alongside the default install and state directory.
Initially this is used to store a collection of known `root_manifest` locations and a copy of the latest manifest version which allow us to find all known locations where zen state is present.
|