| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
| |
fixes issue introduced in #615
|
| |
|
| |
previously the segment would call `clear()` on the `m_Entries` vector but this does not release the backing memory so we have to do the `swap` dance
|
| |
|
|
|
|
| |
* 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
|
| |
|
|
|
| |
* 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.
|
| |
|
|
| |
usable logger (#615)
|
| |
|
|
|
|
|
|
|
| |
* fixed v2 rpc recording issue with >4GB data per segment
* implemented recovery logic to deal with partial RPC recordings
* added check for invalid/null requests in RPC replay
* also made sure at least one worker thread is configured
* fix problem where "null" requests would cause infinite loop!
* added basic RPC recorder tests
|
| |
|
| |
- also fixes weird DateTime/TimeSpan comparison operator
|
| |
|
| |
* keep g_FileSink alive until spdlog has shut down
|
| | |
|
| |
|
|
|
|
|
|
|
| |
(#600)
* Make sure that PathFromHandle don't hide true error when throwing exceptions
* changelog
* return error info in PathFromHandle if path fails to resolve
|
| |
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
| |
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
|
| |
|
| |
* shut down thread pools earlier to worker threads has a chance to terminate before main thread atexit
|
| |
|
| |
- 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.
|
| |
|
|
|
| |
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
|
| | |
|
| |
|
| |
this change replaces hard-coded port numbers in tests with dynamically assigned ports, to avoid potential issues around socket lifetimes and re-use policies
|
| |
|
|
|
|
|
|
|
| |
* make BlockingQueue::m_CompleteAdding non-atomic
* ZenCacheDiskLayer::Flush logging
* name worker threads in ZenCacheDiskLayer::DiscoverBuckets
* name worker threads in gcv2
* improved logging in ZenServerInstance
* scrub threadpool naming
* remove waitpid handling, we should just call wait to kill zombie processes
|
| |
|
|
| |
* add doctest listener so we can output when test/subtests begin
* disable sentry when running a test server
|
| |
|
|
| |
completion (#539)
|
| |
|
|
|
| |
- Feature: Writes a `gc.log` with settings and detailed result after each GC execution (version 2 only)
- Break out file name rotate to allow access for gclog
- CompactBinaryToJson(MemoryView Data, StringBuilderBase& InBuilder)
|
| |
|
|
| |
* don't touch non-locked data when creating manifest
* safety assert for test dir
|
| |
|
|
|
| |
this is a header-only library which mostly contains definitions to support different platforms and compilers.
It is part of the zen codebase but is intended to be consumable separately to zenbase etc to support standalone transport plug-ins and similar.
|
| |
|
|
|
|
|
|
|
| |
this change aims to hide logging internals from client code, in order to make it easier to extend and take more control over the logging process in the future.
As a bonus side effect, the generated code is much tighter (net delta around 2.5% on the resulting executable which includes lots of thirdparty code) and should take less time to compile and link.
Client usage via macros is pretty much unchanged. The main exposure client code had to spdlog internals before was the use of custom loggers per subsystem, where it would be common to have `spdlog::logger` references to keep a reference to a logger within a class. This is now replaced by `zen::LoggerRef` which currently simply encapsulates an actual `spdlog::logger` instance, but this is intended to be an implementation detail which will change in the future.
The way the change works is that we now handle any formatting of log messages in the zencore logging subsystem instead of relying on `spdlog` to manage this. We use the `fmt` library to do the formatting which means the client usage is identical to using `spdlog`. The formatted message is then forwarded onto any sinks etc which are still implememted via `spdlog`.
|
| |
|
|
| |
* separate statsd interfaces so they can be accessible to zenstore
* statsd for cas
|
| |
|
|
| |
this made the file log emit relative timing instead of an absolute timestamp prefix
|
| |
|
|
|
| |
this change adds some includes to files which "inherit" includes from elsewhere
this was exposed on another branch when removing some heavy dependencies from central headers
|
| |
|
|
|
|
|
|
|
| |
zenutil and zenserver both contain very similar logging setup code and this change aims to make them have most code in common.
* fullformatter/jsonformatter/RotatingFileSink are moved into dedicated header files in zenutil
* zenserver `InitializeLogging`/`ShutdownLogging` are renamed `InitializeServerLogging`/`InitializeServerLogging`
* these now call into the common zenutil `BeginInitializeLogging`/`FinishInitializeLogging` in addition to setting up server custom logging
* `std::filesystem::path` is now logged after stripping any `\\\\?\\` prefix for readability
|
| |
|
| |
* New rotating file logger that keeps on running regardless of errors
|
| | |
|
| |
|
|
|
|
|
| |
this adds a new RPC recording path aimed at more continuous recording and analysis of recorded sessions
the new strategy is implemented alongside the original in order to retain the ability to read the older format
the main difference between v2 and v1 is that the new strategy splits the recording into segments which are independent from each other. This is done to enable long running sessions with automatic disk cleanup (not implemented yet), appending to an existing recording (not implemented) and/or partial analysis and processing. The recorder will start a new segment when some criteria is fulfilled, including the number of files in the segment directory, disk footprint etc
|
| |
|
|
|
| |
* use a CbObjectView instead of CbObject to avoid creating IOBufferCore instances
* use BasicFileBuffer directly where possible
* changelog
|
| |
|
| |
these allow standalone programs to share much of the logging setup from zenserver
|
| |
|
| |
added names to process handle GC thread and main thread for easier identification in crash dumps / process monitoring
|
| |
|
|
|
| |
get file name from handle (#393)
- Bugfix: Make sure error logging or destructors don't throw exception when trying to get file name from handle
|
| |
|
|
|
| |
* add retry logic when creating files
* only write disk usage log if disk writes are allowed
* changelog
|
| |
|
|
| |
* use MAP_SHARED when initializing read only access of shared memory
* changelog
|
| |
|
|
| |
* - Bugfix: Fix OpenProcessCache state error causing assert/error
* changelog
|
| | |
|
| |
|
|
|
| |
* add BasicFileBuffer for buffered read of BasicFile
* Use BasicFileBuffer when reading oplog
* changelog
|
| | |
|
| |
|
|
|
|
| |
* bump vcpkg version
* fmt lib 10 fixes
* xmake dependencies (with linux workarounds)
* changelog
|
| | |
|
| |
|
|
|
| |
* added delete-on-close support to BasicFile
* added BasicFile::ReadRange()
|
| |
|
|
|
| |
this change adds `ZenServerInstance::SpawnServerAndWait()` which as the name implies spawns a server and then waits for the instance to reach a usable state before returning to the caller.
It also changes the behaviour of `ZenServerInstance::AttachToRunningServer()` so it matches the Spawn behaviour wrt automatic termination on ZenServerInstance destruction. Previously it would always terminate the subprocess on exit.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
* implemented structured cache logging to be used as audit trail to help analyse potential cache pollution/corruption
* added common header to all known log targets
* made Oid::operator bool explicit to avoid logging/text format mishaps
* HttpClient::operator bool -> explicit
* changed cache logs to not rotate on start in order to retain more history
* added CacheRequestContext
* properly initialize request context
* log session id and request id on zencacehstore get/put
* changelog
|
| | |
|
| |
|
| |
ATL has been used here and there as a convenience. Given that this is a legacy component and not always something which gets installed along with the compiler we hereby remove the dependency altogether in favour of our own simple wrappers
|