| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| |
|
| |
* Don't use copy of Payloads array when fetching memcached payload in GC
|
| |
|
| |
* MaxLoad is max load per monitor slot, not the MaxLoad for the entire graph
|
| |
|
| |
* skip invalid chunks when reclaiming space in block store
|
| |
|
|
|
| |
* 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
|
| |
|
| |
* keep g_FileSink alive until spdlog has shut down
|
| |
|
| |
enabling mimalloc path for `Memory::Alloc` and `Memory::Free`
|
| |
|
|
|
| |
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.
|
| | |
|
| |
|
| |
- Bugfix: Allow attachments that contains a raw size of zero
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
(#600)
* Make sure that PathFromHandle don't hide true error when throwing exceptions
* changelog
* return error info in PathFromHandle if path fails to resolve
|
| | |
| |
| |
| |
| |
| |
| |
| | |
- Improvement: Refactor memory cache for faster trimming and correct trim reporting
- Improvement: Added trace scopes for memory cache trimming
Adding a link back to the cache item payload on the memory cache item allows us to iterate over only the items cached in memory instead of over the entire index.
This also allows us to do efficient compact of the memory cache array when trimming.
It adds 4 bytes of overhead to each item cached in memory.
|
| | |
| |
| | |
this adds information on program name and command line to trace initialization
|
| | |
| |
| |
| |
| |
| | |
- Improvement: Scrub command now validates compressed buffer hashes in filecas storage (used for large chunks)
- Improvement: Added --dry, --no-gc and --no-cas options to zen scrub command
- Improvement: Implemented oplog scrubbing (previously was a no-op)
- Improvement: Implemented support for running scrubbint at startup with --scrub=<options>
|
| | |
| |
| |
| |
| |
| | |
* added ZEN_SCOPED_WARN and implemented multi-line logging
* changed so file log also uses `fullformatter` for consistency and to get the multi-line support across the board
|
| | |
| |
| | |
SuppressConsoleLog now removes any existing console logger to avoid exceptions in spdlog
|
| | |
| |
| |
| |
| |
| | |
- Make sure we don't hold the namespace bucket lock when we create buckets to avoid deadlock
- Pass lock scope to helper functions to clarify locking rules
- Block flush and gc operations for a bucket that is not yet initialized
- Add ZenCacheDiskLayer::GetOrCreateBucket to avoid code duplication
|
| | |\ |
|
| | | |
| | |
| | | |
this was introduced in a recent optimization and would cause CAS items to not be found after a shutdown/restart cycle
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
with these changes it is possible to configure loggers on the command line. For instance:
`xmake run zenserver --log-trace=http_requests,http`
will configure the system so that the `http_request` and `http` loggers are set to TRACE level
|
| | | |
| | |
| | |
| | |
| | | |
GatherReferences (#591)
* Use correct iterator index when looking up memcached payload in gatherreferences
|
| | | |
| | |
| | | |
these changes clean up module dependencies and allow the transports subtree to be built standalone (in the UE tree for instance)
|
| | | |
| | |
| | |
| | |
| | |
| | | |
* added log level control/query to LoggerRef
* added debug logging to http plugin implementation
* added GetDebugName() to transport plugin interfaces
* added debug name to log output
|
| | | |
| | |
| | |
| | |
| | | |
* reserve vectors in gcv2 upfront
* set max load factor for robin_map indexes to reduce memory usage
* set min load factor for robin_map indexes to allow them to shrink
|
| | | |
| | |
| | |
| | | |
* do a more accurate memory usage estimation for memcached entries
* early exit when checking memcache usage
|
| | | | |
|
| | | |
| | |
| | | |
* shut down thread pools earlier to worker threads has a chance to terminate before main thread atexit
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
Also changes the returned fields for each chunk from size->rawsize. Backwards compatibility is not a concern as this was unused in past zenserver releases.
|
| | |/
| |
| |
| | |
Add endpoint for querying all chunk infos in an oplog.
|
| | |
| |
| | |
- Improvement: Reduce memory usage in GC and diskbucket flush
|
| | |
| |
| |
| |
| |
| | |
- Improvement: GCv2: Use separate PreCache step to improve concurrency when checking references
- Improvement: GCv2: Improved verbose logging
- Improvement: GCv2: Sort chunks to read by block/offset when finding references
- Improvement: GCv2: Exit as soon as no more unreferenced items are left
|
| | |
| |
| | |
previously would not shut down the threadpool properly which would leave threads around. This was not a problem in practice for our usage since we keep the thread pool alive for the duration of the process but it's better to clean up properly.
|
| | |
| |
| | |
- Improvement: Use two global worker thread pools instead of ad-hoc creation of worker pools
|
| | |
| |
| |
| | |
previously, the millisecond part was inexplicably logged after the date, not the time.
|
| | |
| |
| |
| | |
* close thread pool at destruction
* parallell casimpl::initialize
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
- Improvement: Added more trace scopes for GCv2
- Bugfix: Make sure we can override flags to "false" when running `zen gc` commmand
- `smallobjects`, `skipcid`, `skipdelete`, `verbose`
|
| | |
| |
| |
| | |
controlled manner (#573)
|
| | |
| |
| |
| | |
* fix missing locks/sync of log position when writing index snapshots
* changelog
|
| | |
| |
| | |
* gcv2 tests for project store and bugfixes
|
| | |
| |
| |
| |
| | |
the previous implementation of in-memory index snapshots serialise data to memory before writing to disk and vice versa when reading. This leads to some memory spikes which end up pushing useful data out of system cache and also cause stalls on I/O operations.
this change moves more code to a streaming serialisation approach which scales better from a memory usage perspective and also performs much better
|
| | |
| |
| |
| |
| | |
- Feature: New endpoint `/admin/gc-stop` to cancel a running garbage collect operation
- Feature: Added `zen gc-stop` command to cancel a running garbage collect operation
- Bugfix: GCv2 - make sure to discover all projects and oplogs before checking for expired data
|
| | |
| |
| |
| | |
- GcScheduler will now cancel any running GC when it shuts down.
- Old GC is rather limited in *when* it reacts to cancel of GC. GCv2 is more responsive.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
* added --powercycle option. when this is passed in the zenserver process will shut down immediately after initialization is complete. This is primarily useful when benchmarking init/cleanup but could also be used to verify/clean up disk state
* moved EmptyStandbyList code to make it accessible to more commands
|
| | |
| |
| |
| |
| |
| | |
- Feature: Added xmake task `updatefrontend` which updates the zip file containing the frontend html (`/src/zenserver/frontend/html.zip`)
- Improvement: The frontend html content is no longer appended at the end of the executable which prevented signing, instead it is compiled in from the `/src/zenserver/frontend/html.zip` archive
- Improvement: MacOS now does ad-hoc code signing by default when issuing `xmake bundle`, signing with proper cert is done on CI builds
|