Repository navigation
Tags: redis/NRedisStack
Tags
Switch NuGet release publishing from API key to OIDC trusted publishi… …ng (#568) * Switch NuGet release publishing from API key to OIDC trusted publishing Replaces the long-lived NUGET_API_KEY secret with GitHub OIDC token exchange via NuGet/login@v1, keeping --skip-duplicate so a job retry after a partial failure doesn't fail on the already-published version. * Scope release job to the release GitHub Environment for OIDC Matches the Environment field on the nuget.org Trusted Publishing policy, so the OIDC token carries the environment claim it expects.
Announce the library name without demanding IDatabase (#542) * Announce the library name without demanding IDatabase Auxiliary.ExecuteAsync unconditionally cast its IDatabaseAsync to IDatabase in order to send the one-time CLIENT SETINFO lib-name/lib-ver pair. A retry-wrapped database (SE.Redis 3.1.0 WithRetry) is async-only - RetryDatabase implements IDatabaseAsync but not IDatabase - so every async module command issued through one threw InvalidCastException before the command was sent, making the retry categories added in #540 unusable from the async API. The announcement never needed the sync interface: it only needed it to create a batch to group the two commands, which don't need grouping. It is now typed as IDatabaseAsync and dispatched fire-and-forget via an internal ClientSetInfoAsync overload that takes dispatch flags, so there is no cast, no batch, and no round-trip on the caller's first command. In the expected case - fire-and-forget completing synchronously - no state machine is entered on this path at all: the overload hands back a cached completed task, and the caller only awaits (to consume a fault) if a task somehow comes back not-yet-completed. A synchronous failure in the version probe can no longer fail the caller's command either; announcing who we are is best-effort. Renamed SetInfoInPipeline -> SetLibraryInfoOnce (internal): there is no longer a pipeline involved. Task.IsCompletedSuccessfully only exists on modern .NET, so netstandard2.0/net481 get it as an extension property polyfill rather than open-coding the Status test at each site. Audited the rest of the library for the same shape: this was the only unconditional cast to a sync SE.Redis interface; SearchCommandsAsync's cluster cursor path was already type-tested. Tests cover an async module command and the first-use announcement over db.WithRetry(...) - both fail with InvalidCastException before this change - plus the synchronous completion that the fire-and-forget dispatch relies on. * - ref 3.1.3 to take the WithRetry()/ITransaction tweaks
Mark the COLLECT search API as [Experimental] (NRS003); SE.Redis 3.0.… …25 (#536) REDUCE COLLECT is still gated behind the server's search-enable-unstable-features flag, so its wire format can move under us. It shipped as stable public API in v1.7.0 by oversight; this re-flags it as experimental for 1.7.1. Follows the established NRS ritual (cf. bed9558 for NRS002): - Experiments.SearchCollect const, reusing id NRS003. That id briefly existed on marc/8_10 for server 8.10 but was removed before any release - confirmed absent from every v* tag - so it is free to reuse under the 'ids that reached users are never reused' rule, and gets no retired-id breadcrumb. - [Experimental] on CollectReducer and Reducers.Collect(). - [NRS003] prefix on all 10 COLLECT entries in PublicAPI.Shipped.txt. The analyzer requires the prefix on every member of an experimental type, not just the type. - docs/exp/NRS003.md, and NRS003 added to Directory.Build.props NoWarn. Also bumps StackExchange.Redis 3.0.17 -> 3.0.25. Verified from outside the repo (where NoWarn does not apply) that a consumer gets 'error NRS003' with the correct exp/NRS003 url, on both net8.0 (BCL attribute) and netstandard2.0 (the internal polyfill). Full 'dotnet build -t:Rebuild' clean.
Promote unshipped public API to shipped for 8.10 GA (#534) Moves all 91 pending entries from PublicAPI.Unshipped.txt into PublicAPI.Shipped.txt, leaving only the '#nullable enable' header behind, so the release gate that requires an empty unshipped file is satisfied. Verified: the union of shipped + unshipped is byte-identical before and after (entries moved, none lost or introduced), no duplicates result, and 'dotnet build -t:Rebuild' is clean - a plain build would not re-run the public API analyzer.
Bump System.Text.Json from 10.0.8 to 10.0.9 (#505) --- updated-dependencies: - dependency-name: System.Text.Json dependency-version: 10.0.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marc Gravell <marc.gravell@gmail.com>
fix RESP3 mismatches (#471) * fix RESP3 mismatches * dotnet format * Spoof RESP2 MRANGE results from RESP3 * fix double-incr * nits * fix rule parsing * fix info (flag) parsing * fix JSON APIs * fix spellcheck parsing * fix content from info result * Marc/resp3 (#477) * ft.config get * fix brittle TS.INFO tests (server version logic) * more runtime server version checks; profiled RESP3 layout * Marc/resp3 (#478) * ft.config get * fix brittle TS.INFO tests (server version logic) * more runtime server version checks; profiled RESP3 layout * dotnet format * the bot is right * - fix more search RESP3 behaviours - normalize time series test namespaces * deps * note GHATL pin * help me understand CI fail * add some key randomness to TestJsonSetNotExistAsync * add GetKeys helper to tell me what is missing in older servers * handle v7 RESP3 profile layout * dotnet format * more v7 fixings * and another * make the bugbot happy
PreviousNext