IGNITE-26630 Separate the stripe key from the cache partition - #13437
Conversation
GridCacheMessage#partition() picks a stripe, it is not a data partition. Move it to a StripedMessage interface, name it stripeIdx(), and replace the instanceof chain in GridIoMessage with that interface. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Fix the order of a new static import, drop the dead setter left next to the renamed getter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
/runall 🚀 RunAll queued — build 9258046 · live progress & verdict: Ignite PR Checker. The verdict lands here when the run finishes. |
|
Ignite PR Checker verdict · RunAll build 9258046 · 147 suites ran, 0 reused
🔎 No blockers found — but the run above can't prove the PR is clean. 18 pre-existing/flaky tests filtered out. Re-run once the above is sorted out. ♻️ Settled after 2 auto re-run wave(s): #1 — 3 blocker + 2 broken suite(s); #2 — 1 broken suite(s). |
# Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerRequest.java
|
Ignite PR Checker verdict · RunAll build 9259924 · 147 suites ran, 0 reused
🔎 No blockers found — but the run above can't prove the PR is clean. 22 pre-existing/flaky tests filtered out. Re-run once the above is sorted out. ♻️ Settled after 2 auto re-run wave(s): #1 — 1 broken suite(s); #2 — 1 broken suite(s). |
Possible compatibility issues. Please, check rolling upgrade casesThis PR modifies protected classes (with Order annotation). Affected files:
|
Step 1 of IGNITE-26630. No wire change: only method names move, no message field is touched.
Why
GridCacheMessage#partition()sounds like a data partition, but it is the key that picks a stripe. The name has already misled: the ticket asked to remove the method, and removing it would send every cache message from the striped pool to the plain system pool, because the base class returns-1while "do not stripe" isInteger.MIN_VALUE. No functional test would notice.What changed
A new
StripedMessageinterface, next toExecutorAwareMessageand shaped like it:GridIoMessageloses its chain:STRIPE_DISABLED_PARTmoves into the interface asNO_STRIPEand stops being a boxedInteger, and the bare-1literals becomeANY_STRIPE.Two classes where the name and the meaning did not match are now explicit:
GridCacheQueryRequestkeepspartition()— that one really is the partition to scan, read inGridCacheDistributedQueryManager— and getsstripeIdx()alongside it.GridNearAtomicCheckUpdateRequestlosespartition(). The value it carries is the stripe of the update request, which the primary copies into the stripe of the response; the handler says so itself: "Message is processed in the same stripe".What is deliberately left alone
The fields are still named
partandpartId, and so are the constructor parameters they feed. Step 2 of the ticket deletes those fields — six of them travel the wire only to pick a stripe and nothing reads them — so renaming them now would churn the generated serializers and their reference files for nothing.Checks
StripedMessageis implemented byGridCacheMessageandDataStreamerRequest, exactly the two arms of the old chain;partition()that silently stopped overriding anything — the only such method left is the intentional one inGridCacheQueryRequest;IgniteCacheAtomicProtocolTest26/26 with assertions enabled — this is the stripe-sensitive path, where the deferred response buffer is aThreadLocalflushed back into its own stripe;DataStreamerImplSelfTest,CacheScanQueryFailoverTest,GridCacheQueryTransformerSelfTest: 61 run, 0 failed;test-compileof all modules, and checkstyle under-Pcheckstyle.