| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Simplify etags [dev] (#1739) * Add SETWITHETAG command (Phase 1 of ETag refactoring) Add new SETWITHETAG command as a dedicated top-level command for setting key-value pairs with ETags. This replaces the SET ... WITHETAG option pattern and is the first step in corralling ETag semantics to dedicated commands only. Changes: - Add RespCommand.SETWITHETAG enum value - Add SlowParseCommand parsing and CmdStrings constant - Add NetworkSETWITHETAG handler in BasicEtagCommands.cs - Add dispatch in RespServerSession.ProcessArrayCommands - Add RMW callbacks (NeedInitialUpdate, InitialUpdater, InPlaceUpdater, NeedCopyUpdate, CopyUpdater, PostInitialUpdater) - Add VarLenInputMethods cases (GetRMWInitialFieldInfo, GetRMWModifiedFieldInfo) with HasETag=true - Add SupportedCommand.cs entry - Add GarnetCommandsInfo.json and GarnetCommandsDocs.json entries - Add generated resource JSON entries - Add SetWithEtagACLsAsync ACL test Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Make all non-ETag commands ETag-blind (Phases 2-6) Remove WITHETAG option from SET and RENAME/RENAMENX commands. Make all non-ETag commands completely ETag-blind — they do not read, check, update, or remove ETags. Phase 2: Remove WITHETAG from SET - Remove WITHETAG parsing from NetworkSETEXNX - Remove EtagOption enum entirely - SET paths always pass withEtag: false Phase 3: Remove WITHETAG from RENAME/RENAMENX - Remove withEtag parameter from API signatures - Simplify RENAME to strictly 2-arg commands Phase 4: Make RMW methods ETag-blind - Remove hadETagPreMutation/shouldUpdateEtag for non-ETag commands - ETag state only initialized for SETIFMATCH/SETIFGREATER/SETWITHETAG/DELIFGREATER - Remove ETag logic from SET/SETKEEPTTL/SETEXNX InitialUpdater/InPlaceUpdater/CopyUpdater - Remove custom command ETag rejection - Reader only sets ETag state for GETWITHETAG/GETIFNOTMATCH Phase 5: Make UpsertMethods ETag-blind - MainStore/ObjectStore/UnifiedStore UpsertMethods pass false for inputHasETag Phase 6: Make UnifiedStore ETag-blind - Remove shouldUpdateEtag pattern from UnifiedStore RMW/InPlaceUpdater - Clean up VarLenInputMethods to not use CheckWithETagFlag Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clean up remaining ETag artifacts (Phase 8) Remove dead ETag constants and error strings: - Remove WITHETAG CmdString (no longer parsed by any command) - Remove RESP_ERR_ETAG_ON_CUSTOM_PROC error string - Remove RESP_ERR_WITHETAG_AND_GETVALUE error string Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update tests and samples for ETag refactoring (Phase 9) - Replace all SET...WITHETAG with SETWITHETAG in tests and samples - Remove tests for removed features: SET WITHETAG NX/XX/KEEPTTL, RENAME WITHETAG, custom command ETag rejection - Remove tests verifying ETag auto-increment on non-ETag commands (APPEND, INCR, DECR, SETRANGE, SETBIT, BITFIELD) - Remove tests verifying SET strips ETags (undefined behavior now) - Fix ETag state initialization for ETag commands on keys without ETags - Update samples/ETag Caching.cs and OccSimulation.cs All 83 ETag tests pass. All 345 RespTests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update documentation for ETag refactoring (Phase 10) - Replace SET (WITHETAG) with SETWITHETAG in garnet-specific.md - Rewrite 'Compatibility with Non-ETag Commands' section with prominent key partitioning warning and usage examples - Remove WITHETAG from SET syntax in raw-string.md - Remove WITHETAG from RENAME/RENAMENX in generic-commands.md - Update blog post intro to reference dedicated ETag command set Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove ETag from Tsavorite hot paths & extract ETag RMW to NoInline helpers (Phases 6b, 7) Phase 6b: Remove dead ETag weight from Tsavorite - Remove ETag field from RecordMetadata struct (never consumed) - Remove eTag field from PendingContext - Remove ~20 pendingContext.eTag assignments from InternalRead/RMW/Upsert/Delete - Simplify RecordMetadata construction in AllocatorScan, TsavoriteIterator, TsavoriteThread, CompletedOutput, Tsavorite.cs Phase 7: Extract ETag RMW logic to NoInline helpers - Create RMWMethods.Etags.cs with 9 [NoInlining] helper methods - Each ETag case in InPlaceUpdaterWorker/InitialUpdater/CopyUpdater/NeedCopyUpdate becomes a single-line call, keeping hot-path methods compact for JIT - Helpers: HandleDelIfGreater*, HandleSetIfMatch*, HandleSetWithEtag* for InPlaceUpdate, InitialUpdate, CopyUpdate, and NeedCopyUpdate Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Extract ETag Reader logic to ReadMethods.Etags.cs with NoInlining Move GETWITHETAG and GETIFNOTMATCH handling from Reader into a [NoInlining] HandleEtagReader helper in ReadMethods.Etags.cs. ETag commands are now delegated at the beginning of Reader before any other processing, keeping the hot-path Reader method compact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove dead inputHasETag parameter from InPlaceWriter helpers All callers pass false — remove the parameter entirely from InPlaceWriterForSpanValue, InPlaceWriterForHeapObjectValue, InPlaceWriterForLogRecordValue, and rename UpdateExpirationAndETag to UpdateExpiration (ETag logic removed). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Make ETag RMW handling fully stateless; remove ETagState Replace functionsState.etagState with local long existingEtag passed to each handler. Consolidate ETag command dispatch into single HandleEtagInPlaceUpdateWorker / HandleEtagCopyUpdateWorker / HandleEtagNeedCopyUpdate dispatchers that read the ETag once and delegate to individual NoInline helpers. - Remove ETagState struct and EtagState.cs entirely - Remove etagState field from FunctionsState - Remove PostInitialUpdater ETag reset - CopyRespWithEtagData now takes long etag directly - Remove isEtagCommand/shouldUpdateEtag variables from hot paths - All ETag logic is now stateless — no shared mutable state Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move ETag dispatch into switch jump tables (Read, RMW) Replace separate if-checks before switches with cases inside the switch for ETag commands. This lets the JIT generate a single jump table covering both ETag and non-ETag commands, eliminating an extra branch on the hot path. - InPlaceUpdaterWorker: ETag cases in the switch - CopyUpdater: ETag cases in the switch - Reader: restructured to use switch with ETag cases Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove withEtag parameter from NetworkSET_Conditional The withEtag parameter is dead — the flag it sets (SetWithETagFlag) is never read by any RMW callback. RMW methods dispatch on the RespCommand enum value instead. Replace the parameter with isEtagCommand derived from the cmd inside the method. Also remove the dead SetWithETagFlag() call from DELIFGREATER handler. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Separate ETag API from non-ETag SET_Conditional - Add SET_ETagConditional and DEL_ETagConditional to IGarnetApi/GarnetApi as dedicated ETag API methods, separate from SET_Conditional - Split NetworkSET_Conditional (non-ETag only) from ExecuteETagSetCommand (shared by SETWITHETAG/SETIFMATCH/SETIFGREATER) - Remove SetWithETagFlag() and CheckWithETagFlag() from RespInputHeader - Remove RespInputFlags.WithEtag enum value - Remove stale ETag comments from ObjectStore VarLenInputMethods - Custom procedure test uses SET_ETagConditional with SETWITHETAG Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix trailing newline in RMWMethods.Etags.cs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix SETWITHETAG TTL semantics and format SETWITHETAG without EX/PX now clears any existing expiration, matching SET semantics. Previously it would preserve the old TTL. - InPlaceUpdate: remove expiration when input.arg1 == 0 - CopyUpdate: don't carry forward srcLogRecord.Expiration - VarLenInputMethods: SETWITHETAG doesn't preserve source expiration (split from SETIFMATCH/SETIFGREATER which do preserve) - Fix trailing newline in RMWMethods.Etags.cs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Optimize VarLenInputMethods: don't reserve ETag space for non-ETag commands Change GetRMWModifiedFieldInfo default from HasETag=srcLogRecord.Info.HasETag to HasETag=false. Non-ETag commands (INCR, APPEND, SETRANGE, etc.) no longer allocate ETag space in copy-updated records. ETag commands explicitly set HasETag=true in their own switch cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review comments - Fix SETWITHETAG CopyUpdate to clear TTL when no EX/PX (match SET semantics) - Fix stale comment in PrivateMethods.cs about ETag value layout - Update doc wording: 'do not preserve' instead of 'do not remove' - Add regression test: SetWithEtagClearsTTLWhenNoExpiryProvided - Keep using Tsavorite.core (needed for PinnedSpanByte in ExecuteETagSetCommand) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> | 4 个月前 | |
Bound LightEpoch waiter semaphore signals to prevent SemaphoreFullException (#2139) | 2 天前 | |
Garnet Web Site Accessibility high contrast fix (#1499) * The red and teal colors in code samples in docs are now being flagged in high contrast accessibility issues. Updating the custom.css fixes things. * Made changes based on CoPilot suggestions | 8 个月前 | |
Add Vector Sets (Preview) command documentation (#1839) Authors website/docs/commands/vector-sets.md modeled after the existing range-index.md page. Covers all currently-implemented Vector Set commands (VADD, VSIM, VEMB, VDIM, VINFO, VGETATTR, VREM) with options, defaults, limits, errors, and an end-to-end example session. Includes a Filter Expression syntax reference, quantization/distance tables, and an explicit 'Not Yet Implemented' table for VCARD/VISMEMBER/VLINKS/ VRANDMEMBER/VSETATTR (which are currently parser stubs returning +OK). Also wires the new page into the docs site: - sidebars.js: adds commands/vector-sets to the Commands sidebar - api-compatibility.md: adds a VECTOR SET (Preview) block listing the 7 implemented commands and 5 not-yet-implemented stubs Adds a 'What's New' section to the top-level README.md advertising Vector Sets (Preview), Range Index (Preview), and the upcoming Garnet paper at VLDB 2026. All content was validated against the actual source in libs/server/Resp/Vector/ rather than the (outdated) dev guide checklist. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> | 3 个月前 | |
Initial commit | 2 年前 | |
Harden website deps: ignore install/postinstall scripts (#2078) Disable dependency lifecycle scripts during install as supply-chain hardening for the Docusaurus website. - website/.npmrc: ignore-scripts=true (covers npm usage / defense in depth) - website/.yarnrc: ignore-scripts true (the effective setting, since Yarn Classic — used by the website and CI — ignores .npmrc's ignore-scripts key) Validated with a fresh `yarn install --frozen-lockfile` and full `yarn build`: scripts are skipped ("Ignored scripts due to flag") and the site still builds successfully. Only core-js (funding message) and mac-only fsevents use install scripts here, both safe to skip. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c5e54355-e40b-43e9-8ffc-a8fab5e6b7bc | 1 个月前 | |
Harden website deps: ignore install/postinstall scripts (#2078) Disable dependency lifecycle scripts during install as supply-chain hardening for the Docusaurus website. - website/.npmrc: ignore-scripts=true (covers npm usage / defense in depth) - website/.yarnrc: ignore-scripts true (the effective setting, since Yarn Classic — used by the website and CI — ignores .npmrc's ignore-scripts key) Validated with a fresh `yarn install --frozen-lockfile` and full `yarn build`: scripts are skipped ("Ignored scripts due to flag") and the site still builds successfully. Only core-js (funding message) and mac-only fsevents use install scripts here, both safe to skip. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c5e54355-e40b-43e9-8ffc-a8fab5e6b7bc | 1 个月前 | |
Initial commit | 2 年前 | |
Initial commit | 2 年前 | |
Update documentation (#1970) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 513c86bf-84d2-4521-88c6-c963e28036b0 | 2 个月前 | |
Build(deps): Bump @easyops-cn/docusaurus-search-local (#2066) Bumps the website-deps group in /website with 1 update: [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local/tree/HEAD/packages/docusaurus-search-local). Updates `@easyops-cn/docusaurus-search-local` from 0.55.2 to 0.55.3 - [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases) - [Commits](https://github.com/easyops-cn/docusaurus-search-local/commits/v0.55.3/packages/docusaurus-search-local) --- updated-dependencies: - dependency-name: "@easyops-cn/docusaurus-search-local" dependency-version: 0.55.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: website-deps ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Badrish Chandramouli <badrishc@microsoft.com> | 1 个月前 | |
Fix checkpoint failure when serializing a concurrently-mutated object (#2101) (#2136) | 2 天前 | |
Build(deps): Bump image-size from 2.0.2 to 2.0.4 in /website (#2170) Bumps [image-size](https://github.com/image-size/image-size) from 2.0.2 to 2.0.4. - [Release notes](https://github.com/image-size/image-size/releases) - [Commits](https://github.com/image-size/image-size/commits) --- updated-dependencies: - dependency-name: image-size dependency-version: 2.0.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 6 小时前 |
Website
This website is built using Docusaurus 2, a modern static website generator.
Installation
$ yarn
Local Development
$ yarn start
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
Build
$ yarn build
This command generates static content into the build directory and can be served using any static contents hosting service.
Deployment
Using SSH:
$ USE_SSH=true yarn deploy
Not using SSH:
$ GIT_USER=<Your GitHub username> yarn deploy
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.