Repository navigation
fix(plugin-redis): Cluster over SSH fails with wrong advice and typed SCAN drops its cursor - #3190
Merged
Merged
Conversation
Signed-off-by: Ngô Quốc Đạt <datlechin@gmail.com>
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.
Summary
RedisTopologyDiagnostics.mismatchonly honoredisTunneledfor a Sentinel node, so a cluster data node fell through to the "set Connection Mode to Cluster" refusal the user could never satisfy.SCANtyped in a query tab showed one page of keys with no way to continue, and an empty mid-scan page showed only "No rows". Root cause:buildScanPageResultnever readpage.cursor, so the next cursor from the SCAN reply was dropped before the result reached the status bar.The unfinished page is deliberately not marked truncated:
isTruncatedshows Fetch All, which re-runs the sameSCAN <cursor>text and would return the same page. The cursor goes out as the result's status message instead, and a cluster cursor is shown whole (<node id>-<cursor>) so it can be passed back toSCAN.Tests
RedisTopologyDiagnosticsTests/clusterThroughTunnelIsFine: spec change, now passesactual: .cluster(the old version passed.standaloneand never tested the cluster case). Fails without the fix.RedisTopologyDiagnosticsTests/standaloneThroughTunnelIsFine: new, keeps the case the old test covered.RedisKeyspacePageTests(new, 9 cases):unfinishedPageNamesNextCursor,finishedPageHasNoNotice,emptyUnfinishedPageNamesNextCursor,clusterCursorIsNamedWhole, and theRedisScanPageOutcomecasesunfinishedPageOutcomeCarriesCursorWithoutTruncating,emptyUnfinishedPageOutcomeCarriesCursor,finishedPageOutcomeHasNoStatusMessage,pageOverRowLimitIsCappedAndTruncated,incompletePageIsTruncated. They fail without the fix: the target does not compile, because nothing on the page carries the cursor.Docs
The docs rewrite branch covers the user-facing text for both changes.