Repository navigation
Hitless demo: smart client handoffs TUI (BYO Redis Enterprise cluster) - #5
Merged
Merged
Conversation
…, optional fault injector) Continuous SET/GET traffic on one connection; every maintenance notification, handoff and failure on screen with a per-disruption summary. Toggles for maintNotifications, maintMovingEndpointType, RESP3/RESP2, database and WithRetry(). Faults (endpoint rebind, migrate, failover, maintenance mode, unannounced proxy restart) through the fault injector by bdb id, or shown as rladmin commands to run by hand. Pins StackExchange.Redis 3.4.31.
…verride HITLESS_ENDPOINTS and friends expand a leading ~/ and HITLESS_MODE picks the starting mode, so a shell profile can hold the whole configuration. --fire <key> --fire-after --quit-after press one fault key and exit on a timer, for a smoke test or a scripted run with --transcript. -p:SERProject=<csproj> builds against a local library instead of the NuGet package, which is how the MOVING drain fix (StackExchange.Redis PR #3335) was verified live. The MOVING event line no longer labels the successor as shards; the connected: line formats the endpoint.
…episode, not just the first
…project does not exist The shell does not expand ~ after = inside -p:, so MSBuild got a literal ~/...; a ProjectReference to a missing path is silently empty, and with the package reference conditioned off the compile had no library at all.
… notifications Measured on the live cluster: the rebind is the before-and-after, migration and failover never drop the connection in either mode, maintenance mode only reaches the proxy if it was on the drained node, and the proxy restart is identical in both modes by design. Notes the bounded size of an unannounced close and the 3.4.31 drain bug fixed in SE.Redis PR #3335.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
hitless/, an interactive TUI for SE.Redis maintenance notifications (smart client handoffs / hitless upgrades), alongside the caching and geo failover demos.Bring your own server. The notifications are a Redis Enterprise proxy feature, so unlike the other demos this one has no Docker setup: it needs a Redis Enterprise cluster (or Redis Cloud database) with the maintenance-notification flags on. The README says exactly what the cluster needs and the database shape used. With Redis's fault injector available, the fault keys drive it directly against the existing database by
bdb_id; without it, each key shows therladmincommand to run by hand and everything else works the same.What it shows
MOVING,MIGRATING/MIGRATED,FAILING_OVER/FAILED_OVER, slot migration), every handoff and connection failure, and the library's own log lines about the featureCLIENT INFO), so aMOVINGvisibly changes itmaintNotifications(Auto/Enabled/Disabled),maintMovingEndpointType, RESP3/RESP2, database;WithRetry()without reconnectingConfiguration comes from the fault injector's
endpoints.json, a gitignoredhitless.local.json, CLI flags orHITLESS_*environment variables (a leading~/is expanded, so a shell profile can hold it). Hands-free runs (--fire M --fire-after 8 --quit-after 80 --transcript) capture a whole episode as a transcript.-p:SERProject=<csproj>builds against a local library instead of the NuGet package.Measured live on a 3-node RS 8.0.22 cluster; the README has a table of what to expect from each fault with notifications off and on. The first live run exposed a drain bug in 3.4.31 (the
MOVINGhandoff recycled at the end of the window under steady load, failing in-flight commands); that is seredis/StackExchange.Redis#3335, and the README's "0 failed" column is with that fix.Pins StackExchange.Redis 3.4.31; the root README gains a row.