| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
| |
| | |
* don't provide size if compressed buffer validation fails
|
| | |
| |
| |
| |
| |
| | |
* Allow caller to control threshold for bulk-loading chunks in IterateChunks
* use smaller batch chunk reading for /fileinfos and /chunkinfos as we do not intend to read the payload
* use smaller batch read buffer when just querying for size of attachments
|
| | |
| |
| |
| |
| |
| | |
- Don't add RawSize and Size in ProjectStore::GetProjectFiles response if we can't get the payload
- Use validation of payload size/existance in all chunk fetch operations in file cas
- In project store oplog validate, make sure we can reach all the payloads
- Add threading to oplog validate request
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
minor clean-up
`zencore/memory.h` used to contain a variety of things including `Malloc` support along with `MemoryView` etc
since the memory allocator stuff moved into `zencore/memory/memory.h` there was basically only `MemoryView` and `MemCmp` in there which seemed better to split out into separate headers to avoid overloading `memory.h`
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change introduces support for tracing of memory allocation activity. The code is ported from UE5, and Unreal Insights can be used to analyze the output. This is currently only fully supported on Windows, but will be extended to Mac/Linux in the near future.
To activate full memory tracking, pass `--trace=memory` on the commandline alongside `--tracehost=<ip>` or `-tracefile=<path>`. For more control over how much detail is traced you can instead pass some combination of `callstack`, `memtag`, `memalloc` instead. In practice, `--trace=memory` is an alias for `--trace=callstack,memtag,memalloc`). For convenience we also support `--trace=memory_light` which omits call stacks.
This change also introduces multiple memory allocators, which may be selected via command-line option `--malloc=<allocator>`:
* `mimalloc` - mimalloc (default, same as before)
* `rpmalloc` - rpmalloc is another high performance allocator for multithreaded applications which may be a better option than mimalloc (to be evaluated). Due to toolchain limitations this is currently only supported on Windows.
* `stomp` - an allocator intended to be used during development/debugging to help track down memory issues such as use-after-free or out-of-bounds access. Currently only supported on Windows.
* `ansi` - fallback to default system allocator
|
| | |
| |
| |
| |
| |
| |
| |
| | |
GC (#224)
make sure we rewrite filecas entries if chunk size changes (due to compression changes)
hardening of move/write files in filecas
if we encounter a filecas entry with mismatching size (due to pre-existing bug) we validate the file and update the index
if we find a bad filecas file on disk we now attempt to remove it
|
| | |
| |
| |
| | |
(#226)
|
| | |
| |
| |
| | |
* bail attachment import on corrupt attachment block
* changelog
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
* removed unused memory classes
* added align.h alignment helpers used in upcoming changes
* added char16_t StringLength
* avoid memory alloc in SetCurrentThreadName
* added command line parsing helpers to zencore/commandline.h
* removed IoBuffer direct VirtualAlloc path
|
| | |
| |
| | |
* some fixes to timestamp caching in logging
|
| | |
| |
| |
| | |
* fix batch request not handling missing chunks correctly
* fix CorrelationId in oplog batch chunk fetch
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Turned tables and progress bars and friends into "widgets!"
* A step to abstracting away a page's the internal DOM structure
* Folded sector creation into Page and pivoted it to a widget host
* Try and keep start/count as numbers regardless of input
* No need for the entry table to be defined up front now
* Add op count and log sixe to oplog list page
* Cache left side toolbar object
* Bounds count page start when building list of oplog entrie
* Start/end navigation tools
* Build rest of entry page while waiting for indexer to load
* Consistent naming with other pages
* Spacially consolidate fetching code
* Hide fetch latency to speed up index generation workers
* Extract dashboard structure from zen.js monolith
* Fix breadcrumbs after restructuring
* Add view link to actions cell of oplogs list
* Generator to enumerate names of entries in indexer
* Methods for simple traversal of component relations
* is() to check if a component is of a certain type
* Extend attr() to get and unset a component's attributes
* Unsetting all styles of anchor tags was underisrable
* Restore page name as id of container element
* A tree view of an oplog
* Move helper class out to private module scope
* Small tweak to use left var that already exists
* Changelog update
* Updated frontend .zip archive
|
| | |
| |
| |
| |
| |
| | |
- Added option gc-validation to zenserver that does a check for missing references in all oplog post full GC. Enabled by default.
- Feature: Added option gc-validation to zen gc command to control reference validation. Enabled by default.
- Added more details in post GC log.
- Fixed race condition in oplog writes which could cause used attachments to be incorrectly removed by GC
|
| | |
| |
| |
| | |
* previously it would assign a child identifier twice in some cases, which would lead to confusing log output
* added pid as context in debug logging when launching a process
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
dependencies (#213)
* Consistent use of semicolons
* Added fallback if oplog entry assumptions do not hold
* 'marker' and 'expired' cells were incorrectly friendly
* Two spaces when there should only be one
* Robustness against .text(undefined) calls
* A single step into JavaScript modules
* Turned Fetcher into a module
* Friendly into a module
* Specialise Cbo field name comparison as TextDecoder() is very slow
* Prefer is_named() over get_name()
* Incorrect logic checking if a server reply was okay
* Try and make sure it's always numbers that flow through Friendly
* Added a progress bar component
* Swap key and package hash columns
* CbObject cloning
* Dark and light themes depending on browser settings
* Adjust styling of input boxes
* Add theme swatches to test page
* Turns out one can nest CSS selectors
* Separate swatch for links/actions
* Generate theme by lerping intermediate colours
* Clearer progress bar
* Chromium was complaining about label-less input elements
* Promise-based cache using an IndexedDb
* WebWorker for generating map of package ids to names
* Indexer class for building, loading, and saving map of ids to names
* Added links to oplog entries of an entry's dependencies
* This doesn't need to be decorated as async any longer
* Implemented oplog searching
* View and drop make no sense on package data payloads
* Rudimentary search result truncation
* Updated changelog
* Updated HTML zip archive
|
| | |
| |
| | |
This fixes a memory leak which would cause stale handles to accumulate until process shutdown. Each cache get operation would therefore leak some memory.
|
| | | |
|
| | |
| |
| | |
* provide shorter project store name in list when not conflicting
|
| | |
| |
| | |
* make sure we track added attachments properly in oplogs
|
| | |
| |
| |
| |
| | |
* auto-resolve project name if only one project exist
* always try to resolve project and oplog name in project-details command
* project-details -> project-op-details
|
| | |
| |
| |
| | |
Nicer progress bar during oplog import/export
Verify that oplog has not been deleted from disk behind our back
|
| | |
| |
| | |
* make sure to clear sponsor slot if pickup does not happen
|
| | |
| |
| |
| |
| |
| |
| | |
- Improvement: Reworked workspace shares to be more secure. Workspaces and workspace shares can only be created using the `zen workspace` command, the http endpoint is disabled unless zenserver is started with the `--workspaces-allow-changes` option enabled.
- Each workspace are now configured via a `zenworkspaceconfig.json` file in the root of each workspace
- A workspace can allow shares to be created via the http interface if the workspace is created with the `--allow-share-create-from-http` option enabled
- A new http endpoint at `/ws` - issuing a `Get` operation will get you a list of workspaces
- A new http endpoint at `/ws/refresh` - issuing a `Get` will make zenserver scan for edits in workspaces and workspace shares
|
| | |
| |
| | |
* fix month conversion in ToDateTime
|
| | |
| |
| |
| | |
pressure (#205)
|
| | |
| |
| | |
- Feature: Added options --bucketsize and --bucketsizes to zen cache-info to get data sizes in cache buckets and attachments
|
| | | |
|
| | |
| |
| | |
* remove PathFromHandle that throws to give better context on failures
|
| | | |
|
| | |
| |
| | |
* make sure to initialize stats in file, jupiter and zen remote stores
|
| | |
| |
| |
| |
| | |
* Mirror command: need to keep n unordered_set of filesystem::path rather than converting to string(), because string() does not work for unicode paths.
* Mirror: Store files in unordered_set as u8string rather than std::filesystem::path; std::filesystem::path does not support unordered_sest hashing on linux.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* MSVC's std::fs::path doesn't like appending '/' separated path components
* Redirect '/dashboard' to '/dashboard/'
* Missed a few copyright headers
* Moved unescaped logo somewhere more suitable
* More robust catching and displaying of errors
* No need for the guard now or for waiting
* Formal access to a component's style
* Style tables explicitly without instead of via a CSS variable
* Highlight a row under the cursor to guide user's eye
* Not using css_var() so it was removed
* Add more detail to a project's list of oplogs
* Disabled test page's CbObject testing
* Consider all fields ending in "importedpackageids" as dependencies
* Don't wrap sector headers
* Package ids were derived with endianess back to front
* Moved oplog marker column further left
* Adopt a vararg-style to Table.add_row() for cell contents
* List and hotlink oplog entries' package data
* Modest control over how a table's columns are arranged
* Added tables to test column spacing
* Keep stat filter input box correctly up to date
* A clang-format run
* Updated html.zip
* validate found oplog directories when doing discover pass
---------
Co-authored-by: Dan Engelbrecht <[email protected]>
|
| | |
| |
| |
| | |
Add ability to read the oplog's ReferencedSet, as written by the cooker, from the ReferencedSet op. Filter oplog entries requests by the ReferencedSet, if trim_by_referencedset parameter is present.. Add -trim=true/false parameter to oplog-mirror command, default to true, to request the trimmed/not trimmed oplog.
Helper functions: Add paging to IterateOpLogWithKey. Add unit tests for IterateOpLog functions. Move OpKeyStringAsOid from httpprojectstore into projectstore.
|
| | |
| |
| | |
* assume "filename" fields in oplog entries are utf8 paths
|
| | |
| |
| |
| |
| |
| |
| | |
* Unselectable logo text
* Revisit alignment of complex request/bytes stats
* ZenStore logo takes you home
|
| | |
| |
| |
| |
| | |
them in memory (#188)
* Don't read chunks into memory during cache batch fetch unless we may cache them in memory
|
| | |
| |
| |
| | |
* zen.exe commands: Add initializers for all POD types; this fixes incorrect behavior for flags in debug
* README.md: Fix typo in --no-dry-run line
|
| | |
| |
| |
| | |
(default off) (#186)
|
| | |
| |
| |
| | |
* rename cache-get opton attachmentid -> attachmenthash for improved clarity
* add help info for --dry-run in DropProjectCommand
|
| | |
| |
| |
| |
| | |
* kill gc v1
* block use of gc v1 from zen command line
* warn and flip to gcv2 if --gc-v2=false is specified for zenserver
|
| | |
| |
| | |
Self-hosted dashboard gets oplog entry view and a stats browser
|
| | |
| |
| |
| | |
* move TryParseObjectId and TryParseIoHash to Oid::TryParse and IoHash::TryParse respectively
* zen cache-get command
|
| | |
| |
| | |
we use the std implementation for all normal cases now. The Windows-only path still exists for VFS cleanup
|
| | |
| |
| |
| |
| |
| | |
* If a block is small (less than half max size) we add it to blocks to compact
Sort blocks when iterating over them
* do compact of block stores even if no new unused are found
* do compact phase even if bucket is empty
|
| | | |
|
| | |
| |
| |
| |
| | |
- Do a single call to mempcy when fetching attachments from the meta store in GC
- Use small lambda when calling std::sort in FilterReferences (enables inlining of the comparision function)
- Use a single function for < and == comparision in KeepUnusedReferences
|
| | |
| |
| | |
* Use alternate IoHash comparision function - reduces KeepUnusedReferences execution time by ~20%
|
| | |
| |
| | |
* zen command - add options to control meta data cache when triggering gc
|
| | |
| |
| |
| |
| |
| | |
* use tsl::robin_set for BlockIndexSet
don't calculate full block location when only block index is needed
* don't copy visitor function
* reserve space for attachments
|