Skip to content

build(deps): bump StackExchange.Redis from 3.2.1 to 3.3.0 - #194

Open
cosmin-staicu wants to merge 1 commit into
fix/stream-maintainer-scan-all-shardsfrom
chore/stackexchange-redis-3.3.0
Open

cosmin-staicu wants to merge 1 commit into
fix/stream-maintainer-scan-all-shardsfrom
chore/stackexchange-redis-3.3.0

Conversation

@cosmin-staicu

@cosmin-staicu cosmin-staicu commented Sep 19, 2026

Copy link
Copy Markdown
Member

Stacked on #193 — merge that first. This PR's base is its branch, so the diff shown here is the bump alone.

Summary

StackExchange.Redis 3.2.1 → 3.3.0, which brings 3.2.15 along with it. This repository calls no API either release altered, and the full suite passes on both target frameworks against a live server.

Dependabot proposed 3.2.1 (#192, merged); 3.3.0 landed on 2026-09-18, after that PR was opened.

What is in the range, and whether it reaches us

Upstream change Reaches us?
#3225 SwitchPrimary retires the servers its rebuild drops Yes — see below
#3237 IServer.Execute supplies the default database Yes, but nothing here relies on it
#3191 server-native maintenance notifications Opt-in; deliberately left off
#3230 RedisValue.EqualityComparer No use site — nothing here is keyed by RedisValue
#3228 string-vs-blob compare without decoding Free wherever it applies; no code change
#3224 connection group throws RedisConnectionException No — no connection groups here
Redis 8.10 bindings / geo-redundant failover out of preview, vector sets no longer experimental Not used

#3225 is the one that touches our code. A dropped node used to stay in the server snapshot — connected and selectable — and IConnectionMultiplexer.GetServers() reports that snapshot (ConnectionMultiplexer.cs:1608). RedisConnector.GetPrimaries() filters on !IsReplica && IsConnected, which a stale-but-connected primary passes. So on a Sentinel-managed connection the stream maintainer could be handed a node that had left the service, and per the upstream description occasionally the same address twice. Fixed upstream; our de-duplication already handled the second half.

#3237 is upstream's fix for the bug corrected in #193IServer.Execute no longer refuses a database-specific command. The maintainer passes the database explicitly, so it neither depends on this nor regresses on earlier versions. Probed on 3.1.31, 3.2.1, 3.2.15 and 3.3.0.

Also

Drops the SER007 suppression in RedisStreamSubjectWriterTestsRedisErrorKind lost its [Experimental] marking in 3.3.0, so the pragma was silencing a diagnostic nothing raises any more. Confirmed by reflecting over both assemblies.

Verification

  • Solution builds with 0 warnings.
  • Full suite against a live Redis: net10.0 1775/1775, net8.0 1754/1754.
  • Re-probed the private members RedisConnector.GetMasterPhysicalConnectionMetrics reflects into (RedisServer.server, ServerEndPoint.interactive, PhysicalBridge.physical, PhysicalConnection.lastWriteTickCount/_writeStatus/lastReadTickCount/_readStatus, GetSentAwaitingResponseCount) — all still resolve on 3.3.0. Green CI would not have caught a break here: that method is [ExcludeFromCodeCoverage] and only runs against a live multiplexer.
  • IServer.ClusterConfiguration still returns a fresh instance per refresh, so the ReferenceEquals contract RefreshClusterMembershipAsync depends on holds.

Contributor declaration

  • I signed off my commits per the DCO (git commit -s).
  • I am contributing on behalf of my employer, or in the course of employment / using employer resources.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The only noted issue is a minor changelog clarification.

Review effort: Lite
Findings: None

What changed in this PR

Updates StackExchange.Redis from 3.2.1 to 3.3.0 and removes an obsolete warning suppression.

Changes:

  • Bumps the centrally managed Redis dependency.
  • Removes the local SER007 suppression.
  • Documents upgrade impacts and verification.
File Description
Directory.Packages.props Updates StackExchange.Redis to 3.3.0.
tests/​UiPath.Caching.Tests/​Broadcast/​RedisStreamSubjectWriterTests.cs Removes the obsolete SER007 suppression.
CHANGELOG.md Records the dependency upgrade and related upstream changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@cosmin-staicu
cosmin-staicu force-pushed the chore/stackexchange-redis-3.3.0 branch from 60fa6ec to 7620908 Compare September 20, 2026 05:14
@cosmin-staicu
cosmin-staicu force-pushed the fix/stream-maintainer-scan-all-shards branch from 07c37fe to 3992a5c Compare September 20, 2026 13:53
@cosmin-staicu
cosmin-staicu force-pushed the chore/stackexchange-redis-3.3.0 branch 3 times, most recently from b396451 to c53cdeb Compare September 21, 2026 05:23
@cosmin-staicu
cosmin-staicu force-pushed the fix/stream-maintainer-scan-all-shards branch from 704b000 to 545a7f5 Compare September 21, 2026 05:23
The range covers 3.2.15 and 3.3.0. This repository calls no API either release
altered, and the full suite passes on both target frameworks against a live server.
Three items in the range are still worth writing down.

SwitchPrimary retires the servers its rebuild drops (upstream #3225). Before that, a
dropped node stayed in the server snapshot -- connected, selectable -- and the snapshot
is what GetServers() reports, so on a Sentinel-managed connection
IRedisConnector.GetPrimaries() could hand the stream maintainer a node that had left the
service, and occasionally hand it the same address twice.

IServer.Execute now supplies the configured default database instead of refusing a
database-specific command (upstream #3237). The maintainer passes the database
explicitly, so it neither leans on this nor breaks on the versions before it.

Server-native maintenance notifications arrive as opt-in, and stay off here.
RedisPlannedMaintenance is driven from ServerMaintenanceEvent/AzureMaintenanceEvent in
this repository, which is unchanged, and switching to the native path is a behavioural
decision rather than part of a version bump.

Also drops the SER007 suppression in RedisStreamSubjectWriterTests: RedisErrorKind lost
its [Experimental] marking in 3.3.0, so the pragma was silencing a diagnostic nothing
raises any more.

Signed-off-by: Cosmin Staicu <cosmin.staicu@uipath.com>
@cosmin-staicu
cosmin-staicu force-pushed the fix/stream-maintainer-scan-all-shards branch from 545a7f5 to 61472a0 Compare September 21, 2026 19:36
@cosmin-staicu
cosmin-staicu force-pushed the chore/stackexchange-redis-3.3.0 branch from c53cdeb to c6aad67 Compare September 21, 2026 19:38

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants