Skip to content

fix(offsets): an offset map claiming offsets the partition does not hold is refused at the first batch - #480

Merged
astubbs merged 11 commits into
masterfrom
fix/run-length-plausibility-ceiling
Sep 9, 2026
Merged

astubbs merged 11 commits into
masterfrom
fix/run-length-plausibility-ceiling

Conversation

@astubbs

@astubbs astubbs commented Sep 8, 2026 •

Copy link
Copy Markdown
Owner

Part of #197 (the v6 release), and the last open item from
#207's offset-metadata work. There is no fork issue for this defect - it
was tracked as docs/inflight/bug-run-length-plausibility-ceiling.md, which this PR retires.

Description

A structurally valid run-length entry of Integer.MAX_VALUE moves the highest-seen offset about two
billion forward. PartitionState#isRecordPreviouslyCompleted then reads every real record in that
range as already succeeded, so PC skips them without ever calling the user function - silent
non-processing rather than replay, reachable through any metadata written against the consumer
group. #207 rejects everything the payload itself proves wrong and stops
exactly here, because a long run of completed offsets is what run-length encoding is for.

The bound is the partition - and it is read off the fetch, not off the wire

The only bound a legitimate map provably cannot cross is the partition's log end offset: PC encodes
only offsets it has polled, an offset the partition does not hold cannot have been polled, and a
Kafka log end offset only grows. Two alternatives were refuted rather than merely disliked:

  • A ceiling derived from configuration (concurrency, the in-flight target). PC's back-pressure
    keys off the encoded payload size, and a map with one stuck offset stays three entries wide
    however far the partition runs ahead of it - so one poison record legitimately produces an
    enormous range, and any such ceiling eventually discards a true map and replays everything in it.
  • A round number. The same objection, failing silently the day it is wrong.

An earlier revision of this PR bought the end offset with a ListOffsets request at assignment,
and that is what the current revision removes.
Two objections, both recorded in the code and in
the solutions write-up so they are not re-litigated: it put a blocking broker round trip inside the
rebalance callback - the most fragile path in this codebase - and it failed open exactly when the
broker was unhealthy, which is when rebalances storm and offset maps get rewritten.

The same fact already arrives for free, slightly later: every fetch response carries the partition's
high watermark, and Consumer#currentLag (KIP-695, kafka-clients 3.0+) exposes it without a request
of its own. ConsumerManager#logEndOffsetIfKnownWithoutBlocking reconstructs it as
position + currentLag, both read in one breath on the thread that owns the consumer, with a
zero-timeout position read so nothing can block; EpochAndRecordsMap carries the answer alongside
the records.

The choke point

PartitionState#maybeRegisterNewPollBatchAsWork - after the epoch fence, before
maybeTruncateOrPruneTrackedOffsets and before the per-record loop. Those two are the only things
that consult the loaded map, so the claim is settled before anything can be skipped against it.
Waiting costs nothing: nothing consults the map until a record arrives to be consulted about.

Absence is not evidence. currentLag is empty until a fetch has happened, so "not established"
is a real answer and the check simply looks again at the next batch. In the meantime the batch's own
records act as a floor - a record that arrived certainly exists - and a floor can only ever
confirm a claim, never refute one, which is why it is safe to act on with no watermark at all.

Same policy, wider coverage than the decode-side version

A refused map goes through EncodedOffsetPair#handleUnreadableMetadata like every other payload
this build cannot read: the default IGNORE discards it, resumes from the committed offset and
warns with the partition, the base offset and the reason; FAIL throws. Nothing counts the discard

  • that is docs/inflight/bug-no-metric-for-discarded-offset-metadata.md, cited from the code and
    out of scope here.

Because the check now reads the decoded claim rather than the bytes, one line covers run-length
and bitset alike (and any encoding added later) - where the decode-side version had to be threaded
through each decoder. OffsetSimpleSerialisation was checked and carries none of this defect class:
base64, the zstd/gzip/snappy codecs, and a byte-per-offset bitmap whose length is the payload
length, with no declared count anywhere.

Evidence

Red by sabotage: with the call to maybeVerifyLoadedOffsetMapAgainstThePartition removed and
nothing else changed, five of the eight cases in ImplausibleOffsetMapOnFirstBatchTest fail -
including the one that reads a record the partition really holds as completed - while the three
control arms (a map inside the partition, a bitset at the boundary, a claim the records themselves
corroborate) stay green, which is what shows the controls do not depend on the guard.

Encoder side kept: every shape EncoderOutputSurvivesDecodeValidationTest produces is measured
against the rule with the tightest honest bound there is - a partition ending exactly on the last
offset encoded - so anything that made the encoder write one offset past what it saw lands as a
false rejection instead of as silence.

MockConsumer, verified rather than assumed (kafka-clients 3.9.1): currentLag answers
endOffsets - position when updateEndOffsets has been called, and OptionalLong.of(0) when it
has not - not empty, as a real consumer answers before its first fetch. An unprimed mock therefore
understates where a partition ends. Nothing in the suite is affected, because the check only engages
for a partition whose committed metadata claims offsets above the committed one; all four behaviours
are pinned in ConsumerManagerLogEndOffsetTest so the next test to reach for this does not
rediscover them.

The full core unit suite is green locally.

Left open, deliberately

The decode-side ceiling this branch previously carried also stopped a huge incomplete run from
being walked into a TreeSet before anything could check it; the lazy check cannot, because it runs
after the decode. That is master's status quo rather than a regression introduced here, and it now
has a note: docs/inflight/bug-a-huge-incomplete-run-allocates-before-anything-can-check-it.md.

Checklist

  • Docs updated - docs/features/invalid-offset-metadata-policy.yaml (its boundary claim was
    falsified by this change), the retired in-flight note, the new docs/solutions/ entry (the
    bound's anchor and why the wire call was rejected), the new note for what is left open, and
    the javadoc on the check itself
  • User-facing feature documentation data added under docs/features/ - the existing
    invalid-offset-metadata-policy.yaml record is corrected rather than a new one added
  • Tests added/updated - ImplausibleOffsetMapOnFirstBatchTest (eight cases through the real
    poll path, both encodings, both policies, both sides of the boundary, deferral and
    corroboration), ConsumerManagerLogEndOffsetTest (the non-blocking watermark read and the
    MockConsumer findings), and EncoderOutputSurvivesDecodeValidationTest now measures every
    encoder shape against the rule
  • docs/inflight/ working note (pr-/branch-) started at the PR's first commit - N/A - this
    PR closes a note rather than opening one, and carries nothing about itself that gh cannot
    show; what outlives it is in docs/solutions/ and the one note above
  • Title & body reflect the final content of this PR
  • Ran ce-simplify and ce-code-review locally - N/A - asking for @claude review this on the
    PR instead, which is the route that can open inline threads

astubbs and others added 2 commits September 8, 2026 13:35
… payload, not a completed range

A structurally valid run-length entry of Integer.MAX_VALUE moves the
highest-seen offset about two billion forward. PartitionState's
isRecordPreviouslyCompleted then reads every real record in that range as
already succeeded, so PC skips them without ever calling the user function -
silent non-processing rather than replay, reachable through any metadata
written against the consumer group. The same entry as an INCOMPLETE run was
worse in a different direction: the decoder walked it one offset at a time
into a TreeSet, so five bytes asked for two billion boxed longs.

#207 hardened this decoder against everything the bytes can settle - a
negative run, a body that is not a whole number of entries, a declared bit
length with no bytes behind it - and could not settle this one, because a long
run of completed offsets is exactly what run-length encoding is for.

THE BOUND, AND THE TWO REJECTED ALTERNATIVES

The check now compares the decoded range against the partition's log end
offset, read once per assignment and passed into the decoders. It is the only
bound that cannot reject a real offset map: PC encodes only offsets it has
polled, an offset the partition does not hold cannot have been polled, and a
Kafka end offset only grows, so a bound read at assignment still holds for a
map written earlier.

Rejected - a ceiling derived from configuration (concurrency, the in-flight
target). Refuted by the product: back-pressure keys off the encoded PAYLOAD
size, and a run-length map with one stuck offset stays three entries wide
however far the partition runs ahead of it. One poison record therefore
produces a legitimately enormous range, and any such ceiling eventually
discards a true map - which replays every record it covered.

Rejected - a round number ("nobody legitimately runs a billion ahead"). The
same objection, failing silently the day it is wrong. Both are what left this
defect open: the ceiling was framed as a number somebody had to pick, when the
authority was one call away on an object the code already held.

WHAT A LEGITIMATE LONG RUN LOOKS LIKE, so the guard cannot reject one: one
record stuck at the committed offset while every offset above it succeeds.
That is ordinary here and self-limiting only in payload size, never in range -
which is why the javadoc on runLengthDecodeToIncompletes states it, and why
every encoder round-trip case in EncoderOutputSurvivesDecodeValidationTest is
now decoded twice: unbounded, and against a partition ending exactly on the
last offset encoded. Anything that made the encoder write one offset past what
it saw now lands as a false rejection instead of as silence. The encoder needs
no change: RunLengthEncoder's range top is OffsetSimultaneousEncoder's
highestSucceededOffset, an offset PC actually saw.

ROUTED THROUGH THE EXISTING POLICY, not a parallel one. An implausible payload
is an unreadable payload: CorruptOffsetMetadataException, caught by
EncodedOffsetPair#getDecodedIncompletes and handed to
invalidOffsetMetadataPolicy. Under the default IGNORE the map is discarded and
processing resumes from the committed offset, with the existing warn naming the
partition, the base offset and this reason; under FAIL it stops. Nothing counts
the discard - that is
docs/inflight/bug-no-metric-for-discarded-offset-metadata.md, cited from the
code and deliberately out of scope.

GROUND TRUTH, AND WHAT HAPPENS WITHOUT IT. OffsetMapCodecManager asks the
consumer for the end offsets of the partitions that actually carry metadata,
once, batched, on a rebalance that has already paid for a JoinGroup, a
SyncGroup and an OffsetFetch, and skipped entirely when no assigned partition
has a map to check. Every failure - an unavailable leader, a timeout, a
consumer that will not answer - is caught and logged, and the decoders are
handed "unknown", which refuses nothing. Failing closed would discard honest
maps on a broker hiccup, an event far more likely than the corrupt payload the
guard is for.

THE SAME SHAPE IN THE BITSET DECODER is fixed too, because the parameter was
already in hand: a declared bit count the format cannot prove absurd. It is
less exposed - #207 made the length prove itself against bytes that are
present, so a full 4KB metadata field buys tens of thousands of skipped records
rather than two billion - but bounded is not true.

Proven red before the fix: with the main code reverted,
aRunPastTheEndOfThePartitionDoesNotMarkRealRecordsAsCompleted read a record the
partition really holds as completed, and failPolicyRejectsARunPastTheEndOfThePartition
raised nothing, while both control arms (a long run inside the partition, and an
unknown end offset) passed unchanged. The bitset half was proven by sabotage -
disabling its check alone turns aBitSetReachingPastTheEndOfThePartitionIsRejected
red. The round-trip test earned its place immediately: it caught an overflow in
the first version of the guard, where Long.MAX_VALUE as the unknown ceiling
wrapped the arithmetic and rejected every payload including the encoder's own.

docs/inflight/bug-run-length-plausibility-ceiling.md is retired; the reasoning
about the bound outlives it in
docs/solutions/architecture-patterns/bound-a-guard-with-ground-truth-not-a-plausible-number-2026-09-08.md,
and pr-207's left-open list drops the entry.

Co-authored-by: Claude Opus <noreply@anthropic.com>
…s the partition cannot hold

The feature record's boundaries said the policy "does not govern a payload
that decodes successfully into a wrong-but-plausible offset map; nothing in
such a payload proves it wrong". The plausibility ceiling falsifies half of
that: the partition proves it wrong, for any map reaching past the last offset
the partition holds.

Recorded here as well as in the code because check-docs-data.sh validates
structure and not truth - the same way this file was falsified once before, by
the PR that wrote it.

Co-authored-by: Claude Opus <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

✅ Duplicate Code Report

Two engines run in parallel for cross-validation. Each has its own thresholds tuned to its baseline - the real safety net is the per-engine "max increase vs base" check.

✅ PMD CPD

PR Base Change
Clones 27 27 ➖ 0
Duplicated lines 949 949 ➖ 0
Duplication 0.37% 0.37% ➖ 0
Rule Limit Status
Max duplication 0.5% ✅ Pass (0.37%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

PR Base Change
Clones 106 105 🫤 +1
Duplicated lines 1503 1492 :face_with_monocle: +11
Duplication 0.84% 0.84% ➖ 0
Rule Limit Status
Max duplication 2% ✅ Pass (0.84%)
Max increase vs base +0.1% ✅ Pass (+0.00%)
⚠️ 2 new clones introduced
  • 11 lines: parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ExternalEnginePipelineBufferTest.java:9 <-> parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/ImplausibleOffsetMapOnFirstBatchTest.java:10
  • 9 lines: parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerLogEndOffsetTest.java:8 <-> parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateRegistrationOrder370Test.java:13

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

📌 Duplicate code detection tool report

The tool analyzed your source code and found the following degree of similarity between the files:

🆕 New file similarities introduced

File A File B Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/ForeignOffsetMetadataOnAssignmentTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetCodecTestUtils.java 31.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetMapCodecManager.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 31.2
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.1

🔺 Increased similarities

File A File B Base (%) PR (%) Change
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java 31.2 32.5 +1.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMap.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 30.8 32.0 +1.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 37.1 38.2 +1.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 33.3 34.0 +0.8
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 37.6 38.2 +0.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCloseOwnershipTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTest.java 34.4 34.9 +0.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 30.2 30.7 +0.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java 33.3 33.7 +0.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodedOffsetPair.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetMapCodecManager.java 35.5 35.9 +0.4
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java 32.7 33.0 +0.3
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerStaleCheckDoubleLookupTest.java 41.8 42.0 +0.2
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BackPressureFlagVisibilityProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java 47.8 48.0 +0.2
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 31.5 31.6 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.8 30.9 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/DispatchScanMeter.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OrderingModeDispatchParityTest.java 41.1 41.2 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSyncCommitMarksCleanOnReturnTest.java 41.3 41.5 +0.1
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BackPressureFlagVisibilityProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 46.7 46.8 +0.1
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 44.9 45.1 +0.1
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 31.2 31.4 +0.1
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/Rebalance857CommitSyncDeadlockProbeBase.java parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 33.6 33.8 +0.1

...and 76 more

Full similarity report
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BackPressureFlagVisibilityProbes.java

📄 jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BackPressureFlagVisibilityProbes.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java 47.96
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 46.82
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java

📄 jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 37.09
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 32.87
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java

📄 jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 37.57
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 35.32
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java

📄 jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java 55.78 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 55.25 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BackPressureFlagVisibilityProbes.java 46.82
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 37.57
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 37.09
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java

📄 jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 55.78 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BackPressureFlagVisibilityProbes.java 47.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 33.73
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitWindowSeamTest.java 32.29
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java

📄 jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 55.25 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 35.32
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 32.87
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 55.96 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 37.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 32.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 30.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 56.26 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 54.9 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 43.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 42.22
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 34.21
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 32.66
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 56.26 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 47.71
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 41.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 39.33
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 35.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.6
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/PCRetriableExceptionTest.java 32.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java 30.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 55.96 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 46.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.93
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 54.9 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 52.13 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 47.71
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 39.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 34.84
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 33.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 33.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 52.13 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 42.22
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 39.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 39.33
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 30.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 47.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java 38.79
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 33.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContext.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContext.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 30.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java 47.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContext.java 30.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 38.21
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/SubmitWorkToPoolShutdownRaceTest.java 38.14
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 37.03
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.15
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 34.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java 34.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 33.8
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 33.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 32.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 32.54
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java 32.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java 30.93
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 30.61
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 34.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 34.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 30.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMap.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMap.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 31.99
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ExternalEnginePipelineBufferTest.java 39.43
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 37.03
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 34.87
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 50.18 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 48.87
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 46.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCInternalRuntimeException.java 38.28
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 37.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 37.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 31.47
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCInternalRuntimeException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCInternalRuntimeException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 38.28
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 34.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 32.66
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 30.6
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.78
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtilsTest.java 35.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java 33.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtilsTest.java 31.9
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 30.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java 40.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 31.47
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 30.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 30.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnsupportedOffsetEncodingException.java 37.32
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java 31.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodedOffsetPair.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodedOffsetPair.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetMapCodecManager.java 35.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java 30.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 37.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 48.87
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 45.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 34.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 33.23
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 50.18 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 45.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 32.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java 37.87
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/WorkManagerOffsetMapCodecManagerTest.java 31.17
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodedOffsetPair.java 30.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetMapCodecManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetMapCodecManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodedOffsetPair.java 35.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 31.25
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 57.97 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 34.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 31.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 30.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 57.97 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 33.23
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnsupportedOffsetEncodingException.java 50.11 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java 37.87
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataException.java 31.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnsupportedOffsetEncodingException.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnsupportedOffsetEncodingException.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java 50.11 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataException.java 37.32
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ControllerThreadOnly.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ControllerThreadOnly.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ArchitectureTest.java 33.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/DispatchScanMeter.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/DispatchScanMeter.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OrderingModeDispatchParityTest.java 41.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 38.21
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 38.16
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 34.05
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java 33.73
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateAcknowledgedCommitOffsetTest.java 33.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetMapCodecManager.java 31.25
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java 30.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 41.92
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 38.16
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.8
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMap.java 31.99
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateManagerRevokeAfterFailedAssignmentTest.java 30.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 48.03
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardStaleSweepReplacementEvictionTest.java 41.28
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 37.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 35.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 33.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 32.61
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 48.03
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRebalancePathTest.java 44.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 40.33
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 38.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.32
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.61
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java 49.11
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 36.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 33.65
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java

📄 parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 41.92
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 36.32
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 36.15
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 35.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 34.05
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java 35.02
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 58.48 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 45.43
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/Rebalance857CommitSyncDeadlockProbeBase.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/Rebalance857CommitSyncDeadlockProbeBase.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 33.77
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/Rebalance857CommitSyncDeadlockProbeBase.java 33.77
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 53.56 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 45.43
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 30.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.09
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 45.07
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalPartialResultSetIT.java 35.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 33.37
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalVisibilityIT.java 31.62
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 45.07
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 35.31
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 31.35
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 31.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 31.65
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 31.35
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalPartialResultSetIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalPartialResultSetIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 35.25
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalVisibilityIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalVisibilityIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 31.62
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 58.48 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 53.56 ⚠️
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 36.73
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 42.95
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java 40.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 36.59
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 32.76
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 32.33
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 44.26
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 42.95
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.26
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java 50.51 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 44.26
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 36.59
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 32.91
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeDrainIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeDrainIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkDrainIT.java 38.63
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 39.05
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkDrainIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkDrainIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeDrainIT.java 38.63
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkCooperativeIT.java 39.05
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 32.33
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 50.51 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 40.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 38.26
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 32.91
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 32.76
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCap.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCap.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCapIT.java 51.03 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCapIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCapIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCap.java 51.03 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceProgressView.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceProgressView.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceStallDetector.java 30.31
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceStallDetector.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceStallDetector.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceProgressView.java 30.31
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedger.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedger.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedgerIT.java 30.27
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedgerIT.java

📄 parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedgerIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedger.java 30.27
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/SubmitWorkToPoolShutdownRaceTest.java 36.23
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java 31.07
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ArchitectureTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ArchitectureTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RebalanceCallbackRuleControlTest.java 34.05
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ControllerThreadOnly.java 33.75
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/ControllerThreadOnlyReachFromARebalanceCallback.java 30.11
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AsyncCommitAcknowledgementTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AsyncCommitAcknowledgementTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSyncCommitMarksCleanOnReturnTest.java 47.84
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 46.19
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackDroppedTest.java 35.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 43.56
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 39.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AsyncCommitAcknowledgementTestBase.java 46.19
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSyncCommitMarksCleanOnReturnTest.java 41.45
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitResponseTimeoutSymptomTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitResponseTimeoutSymptomTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTestBase.java 32.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java 50.97 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 49.22
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 43.69
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ForeignThread.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ForeignThread.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTestBase.java 34.52
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcBoundaryProbe.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcBoundaryProbe.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcContextPropagationTest.java 34.91
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcContextPropagationTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcContextPropagationTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcBoundaryProbe.java 34.91
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackDroppedTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackDroppedTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackFailsTest.java 45.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AsyncCommitAcknowledgementTestBase.java 35.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackFailsTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackFailsTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerAsyncCommitCallbackDroppedTest.java 45.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java 43.6
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSaslAuthenticationTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerCommitTimeoutTest.java 43.6
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSyncCommitMarksCleanOnReturnTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerSyncCommitMarksCleanOnReturnTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AsyncCommitAcknowledgementTestBase.java 47.84
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 41.45
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitResponseTimeoutSymptomTest.java 32.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/PCRetriableExceptionTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/PCRetriableExceptionTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 32.4
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java 32.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java 32.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 31.07
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java 39.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CheckQuarantineOwnersScriptTest.java 43.56
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RebalanceCallbackRuleControlTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RebalanceCallbackRuleControlTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkContainerSortedCollectionRuleControlTest.java 54.51 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ArchitectureTest.java 34.05
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/BlockingReachThroughAMethodReference.java 33.51
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/ControllerThreadOnlyReachFromARebalanceCallback.java 30.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilter.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilter.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilterTest.java 34.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilterTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilterTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilter.java 34.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 87.84 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.56 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.56 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.18 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.18 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.18 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.7 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.7 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 35.31
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 33.37
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 31.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/BlockingReachThroughAMethodReference.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/BlockingReachThroughAMethodReference.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/ControllerThreadOnlyReachFromARebalanceCallback.java 44.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RebalanceCallbackRuleControlTest.java 33.51
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/ControllerThreadOnlyReachFromARebalanceCallback.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/ControllerThreadOnlyReachFromARebalanceCallback.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/BlockingReachThroughAMethodReference.java 44.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RebalanceCallbackRuleControlTest.java 30.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ArchitectureTest.java 30.11
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/SortedCollectionOfWorkContainers.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/SortedCollectionOfWorkContainers.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkContainerIsNeverInASortedCollectionArchTest.java 40.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCloseOwnershipTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCloseOwnershipTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTest.java 34.9
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMapRaceTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMapRaceTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerStaleContainerTest.java 35.73
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ExternalEnginePipelineBufferTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ExternalEnginePipelineBufferTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 39.43
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LastCommitTimeFenceTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LastCommitTimeFenceTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCrossThreadFieldFenceTest.java 32.21
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java 34.6
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 38.79
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 35.95
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 32.88
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java 32.88
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 42.78
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java 35.95
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.54
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 31.65
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java 30.09
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 30.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/SubmitWorkToPoolShutdownRaceTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/SubmitWorkToPoolShutdownRaceTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 38.14
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java 36.23
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 39.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 34.21
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCloseOwnershipTest.java 34.9
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTestBase.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ForeignThread.java 34.52
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java 74.28 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 44.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 42.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 36.69
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java 33.67
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtilsTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtilsTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 35.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java 35.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtilsTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtilsTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java 31.9
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java 40.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 34.6
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/ForeignOffsetMetadataOnAssignmentTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/ForeignOffsetMetadataOnAssignmentTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetCodecTestUtils.java 31.34
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetCodecTestUtils.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetCodecTestUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/ForeignOffsetMetadataOnAssignmentTest.java 31.34
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java 36.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java 36.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/WorkManagerOffsetMapCodecManagerTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/WorkManagerOffsetMapCodecManagerTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java 31.17
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java 42.43
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java 35.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OrderingModeDispatchParityTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OrderingModeDispatchParityTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/DispatchScanMeter.java 41.22
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateAcknowledgedCommitOffsetTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateAcknowledgedCommitOffsetTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 33.12
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java 42.43
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java 38.12
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java 38.12
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitWindowSeamTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitWindowSeamTest.java

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitWindowLostUpdateProbes.java 32.29
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCrossThreadFieldFenceTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCrossThreadFieldFenceTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LastCommitTimeFenceTest.java 32.21
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 30.51
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateManagerRevokeAfterFailedAssignmentTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateManagerRevokeAfterFailedAssignmentTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 30.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ProcessingShardStaleReplacement909Test.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ProcessingShardStaleReplacement909Test.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerStaleContainerTest.java 44.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingCommitCycleState.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingCommitCycleState.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java 58.43 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingCommitCycleState.java 58.43 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java 35.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueLincheckTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueLincheckTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 38.46
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRebalancePathTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRebalancePathTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 44.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 41.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 31.88
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerStaleCheckDoubleLookupTest.java 42.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRebalancePathTest.java 41.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 40.33
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 33.16
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 32.61
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueLincheckTest.java 38.46
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 30.51
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java 30.36
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerStaleContainerTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerStaleContainerTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ProcessingShardStaleReplacement909Test.java 44.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMapRaceTest.java 35.73
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardStaleSweepReplacementEvictionTest.java 39.05
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 38.06
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 37.52
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 33.16
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRebalancePathTest.java 31.88
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardStaleSweepReplacementEvictionTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardStaleSweepReplacementEvictionTest.java

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 41.28
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 39.05
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 74.28 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 53.3 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 49.11
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkContainerIsNeverInASortedCollectionArchTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkContainerIsNeverInASortedCollectionArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/archfixture/SortedCollectionOfWorkContainers.java 40.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkContainerSortedCollectionRuleControlTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkContainerSortedCollectionRuleControlTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RebalanceCallbackRuleControlTest.java 54.51 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 30.36
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerStaleCheckDoubleLookupTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerStaleCheckDoubleLookupTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 42.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java 53.3 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 44.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/CommitHistorySubject.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/CommitHistorySubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java 36.29
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java

📄 parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/CommitHistorySubject.java 36.29
parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java

📄 parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-reactor/src/main/java/bz/stub/parallelconsumer/examples/reactor/ReactorApp.java 35.73
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java

📄 parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/ReactorAppTest.java 38.94
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java 36.62
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java 34.78
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java

📄 parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 83.18 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 83.14 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 78.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 78.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java

📄 parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 81.7 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.65 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 75.95 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java

📄 parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 36.62
parallel-consumer-examples/parallel-consumer-example-reactor/src/main/java/bz/stub/parallelconsumer/examples/reactor/ReactorApp.java

📄 parallel-consumer-examples/parallel-consumer-example-reactor/src/main/java/bz/stub/parallelconsumer/examples/reactor/ReactorApp.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-vertx/src/main/java/bz/stub/parallelconsumer/examples/vertx/VertxApp.java 64.11 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java 35.73
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/ReactorAppTest.java

📄 parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/ReactorAppTest.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java 45.26
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 38.94
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java

📄 parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 83.18 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 83.14 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 78.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 78.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java

📄 parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 81.7 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.65 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 75.95 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/main/java/bz/stub/parallelconsumer/examples/vertx/VertxApp.java

📄 parallel-consumer-examples/parallel-consumer-example-vertx/src/main/java/bz/stub/parallelconsumer/examples/vertx/VertxApp.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-reactor/src/main/java/bz/stub/parallelconsumer/examples/reactor/ReactorApp.java 64.11 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java

📄 parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 83.18 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 83.14 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 78.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 78.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java

📄 parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/ReactorAppTest.java 45.26
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 34.78
parallel-consumer-mutiny/src/main/java/bz/stub/parallelconsumer/mutiny/MutinyProcessor.java

📄 parallel-consumer-mutiny/src/main/java/bz/stub/parallelconsumer/mutiny/MutinyProcessor.java

File Similarity (%)
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java 42.67
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java 81.25 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 49.22
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 49.05
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyMdcPropagationTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyMdcPropagationTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorMdcPropagationTest.java 47.06
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyPCTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyPCTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorPCTest.java 69.37 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java

📄 parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 86.56 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.51 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.25 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java

📄 parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java

File Similarity (%)
parallel-consumer-mutiny/src/main/java/bz/stub/parallelconsumer/mutiny/MutinyProcessor.java 42.67
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 81.25 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.97 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 50.77 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorMdcPropagationTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorMdcPropagationTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyMdcPropagationTest.java 47.06
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorPCTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorPCTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyPCTest.java 69.37 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java

📄 parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 86.56 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.51 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 85.25 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 81.93 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 80.47 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 44.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 43.71
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 38.85
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 37.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 35.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 33.63
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 44.04
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 43.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 41.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 39.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.57
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 38.05
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 37.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 34.87
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBaseUnitTest.java 31.07
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 43.73
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 38.85
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 38.05
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 30.08
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

📄 parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 36.73
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 30.46
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java

📄 parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 87.84 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.51 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.51 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.14 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.14 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.14 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.65 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.65 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBaseUnitTest.java

📄 parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBaseUnitTest.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 31.07
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java

📄 parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorBatchTest.java 50.77 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 49.05
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 43.69

@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

[superseded - the quarantine lane is now empty] 🧪🔒 Quarantine Lane Report

The superseded report, collapsed because it no longer applies
Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature
RegistrationRaceStaleResidentIT.freshArrivalCollidingWithStaleShardResidentMustStillGetProcessed 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature

🔴 expected while the owner PR is open · 🟡🎲 flapper, pass proves nothing · 🚨 a deterministic quarantined test passing means its fix landed: delete its @Quarantined annotation + docs/quarantined-tests.md entry (a merge-blocking review thread has been opened). Lane: non-gating; rules: see the Quarantine Audit check.

No quarantined test changed outcome since the previous push.

Updated for cc0d887 · run 34178899281 · 2026-09-08 02:12 UTC

Superseded by a newer quarantine lane report.

@codecov

codecov Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.02326% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.04%. Comparing base (a055248) to head (b85862e).
⚠️ Report is 1 commits behind head on master.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...tub/parallelconsumer/internal/ConsumerManager.java 75.00% 1 Missing and 1 partial ⚠️
...bz/stub/parallelconsumer/state/PartitionState.java 96.42% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master     #480      +/-   ##
============================================
+ Coverage     82.50%   83.04%   +0.54%     
- Complexity     1563     1583      +20     
============================================
  Files            96       96              
  Lines          5383     5421      +38     
  Branches        537      544       +7     
============================================
+ Hits           4441     4502      +61     
+ Misses          747      724      -23     
  Partials        195      195              
Flag Coverage Δ
chaos 53.36% <46.51%> (?)
integration 61.62% <46.51%> (-0.11%) ⬇️
performance 47.74% <30.23%> (?)
unit 79.24% <93.02%> (+0.03%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

⚠️ SpotBugs Report

354 bug(s) found (rule-level exclusions only - see docs/inflight/static-spotbugs-rule-registry.md). See the annotations on the Files Changed tab for details.

Updated for b85862e · run 34296835356 · 2026-09-09 00:59 UTC

@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

🟢 Throughput — OK

This branch measured the same speed as master, on the one test this measures.

What Value Meaning
Compared with master 0.995 above 1.00 is faster, below is slower
Subject test took 63.5s the test under measurement
Control tests took 34.3s the other tests in this same run
Subject ÷ controls, here 1.850 not a speed - a shape that cancels machine speed
Subject ÷ controls, master 1.842 median of recent master runs
Reported rate 62665 rec/s this machine only; not comparable across runners

Allowable range 🟢 ≥ 0.70 · 🟡 0.50–0.70 (about a 30% loss) · 🔴 < 0.50 (about a 50% loss)

What the numbers mean, and what they cannot tell you

The one that gets misread. Subject ÷ controls is a shape, not a speed. 1.7 means the subject took 1.7 times as long as the control tests in the same run - it says nothing about master on its own, and a reviewer has already read it as "1.7x faster than master". Only Compared with master answers that question.

Why a shape and not a rate. A rate depends on which runner you drew. A shape does not: every test here processes a fixed number of records, so a runner twice as slow doubles the subject and the controls together and leaves their ratio alone. That is the whole trick, and it is why the reported rate is shown last and labelled as this machine only.

Reading the comparison. master ÷ this run. Above 1.00 the subject is proportionally quicker here than on master; below 1.00 it is slower. 0.50 means it takes twice as long relative to its controls - that is the failing bound, not a small one.

By conservation, not by correction. Every test in this lane processes a fixed number of records, so within one run the ratio of one test's time to another's is invariant under machine speed — a runner twice as slow doubles both terms and leaves the ratio alone. There is no machine-index correction to be wrong, because nothing needed correcting. share = subjectSeconds / controlSeconds, both from this same run.

Per-method times, not class times. A class time is work + setup, and container startup and @BeforeAll do not scale with work — they are the non-conserved term, and leaving them in breaks the invariant.

Reference is the median of 10 recent perf baseline (master) run(s), read from their artifacts. There is no committed baseline to go stale, and a share is dimensionless, so an old entry stays comparable to a new one without re-baselining. Shares observed: 1.619 – 2.069.

What this still cannot do. It removes machine-to-machine variance. It does not remove this test's own run-to-run variance, measured at about 30% on a single unchanged commit while its controls stayed within 5%. That is a property of the test, not of the comparison, and no arithmetic here can touch it — which is why the reference is a median and the bounds are deliberately coarse. 🟡 means look at this; only 🔴 is outside the measured spread.

Runs used: b654cb2, a055248, 65e11e3, e05b399, ee3d8a9, 890aa53, fd3f913, 21e8728, 9302a89, c2d35c0

Since the previous push: ratio 1.011 -> 0.995, share 1.822 -> 1.85, rate 66922 -> 62665 (-6.4%). One push of difference sits inside this test's measured spread - read it as movement, not as a result.

Updated for b85862e · run 34296835356 · 2026-09-09 01:01 UTC

…new lines

bin/check-pr-analysis-surfaces.sh reports three SpotBugs findings on lines
this PR wrote, and the point of reading that output before review is to act
on it:

- the set of partitions to look up was called partitionsCarryingAMap, where
  "map" meant the offset map and SpotBugs read it as the collection type. It
  is a Set, so the name now says metadata instead.
- two identity lambdas (builder -> builder) become UnaryOperator.identity().

No behaviour change. The seven findings inherited on lines this PR did not
write are left alone, per the script's own split.

Co-authored-by: Claude Opus <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Sep 8, 2026
… tier 1

The one item the burn-down had filed under "owner's decision" is decided
by the owner asking for it to be built: #480 bounds every decoded
run and bitset by the partition's log end offset, the one bound that
cannot reject a real map because PC only encodes offsets it polled, and
routes the rejection through invalidOffsetMetadataPolicy with no
parallel policy, failing open with a warn if the broker will not answer.
The same defect class was found and fixed in the bitset decoder; the
simple serialisation has no declared count and is clean. Proven red
through the real assignment path, mutation lane green on the bound.

The burn-down moves it into tier 1 and stops linking the inflight note,
which #480 retires into docs/solutions/ - the link would dangle
the moment that PR lands.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Sep 8, 2026
… offsets - note it under confluentinc#233

The registry already says OffsetMapCodecManager conflates encode and decode
and needs a Consumer only for one decode-on-assignment method. #480
adds a second use of that consumer in the same method - a blocking
ListOffsets round trip inside the rebalance callback, batched and failing
open - to bound decoded runs and bitsets by the log end offset. The entry
records that the ground-truth lookup moves out with the decode side when
the split happens.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Sep 8, 2026
Master landed the async-commit acknowledgement (#470, silent loss on
the default commit mode) and the quarantine clearance (#473), which
empties docs/quarantined-tests.md so the release guard no longer blocks on
it and moves the capacity profiles behind a measured tag. With #466
and #468 already in, tier 1 has four of its seven merged; what is
left is #469, #481, #480 and #477.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Sep 8, 2026
The owner PR that superseded #431 has squash-merged. Tier 1 now
has five of its seven merged; what is left is #469, #480
(being reworked off the wire) and #477.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…first batch

Owner's decision on #480: keep the bound, do not buy
it with a broker request. This replaces the ListOffsets-at-assignment version
of the same check, commit by commit, and covers strictly more.

WHAT THE CHECK IS. A structurally valid run-length entry of Integer.MAX_VALUE
moves the highest-seen offset about two billion forward, and
PartitionState#isRecordPreviouslyCompleted then reads every real record in that
range as already succeeded - PC skips them without ever calling the user
function. Silent non-processing, not replay, from metadata anything sharing the
consumer group can write. #207 rejects everything the payload itself
proves wrong and stops exactly here, because a long run of completed offsets is
what run-length encoding is FOR.

WHY NOT AT DECODE. Decoding happens inside the rebalance callback, where the
only way to learn where a partition ends is a blocking ListOffsets request. Two
objections, and both are recorded rather than reasoned about again later: it
puts a broker round trip on the most fragile path in this codebase, and it
fails open precisely when the broker is unhealthy - which is when rebalances
storm and offset maps get rewritten. The previous commits on this branch did
exactly that; this one deletes it.

WHERE IT LANDS INSTEAD. The fetch that delivers the first batch already carries
the partition's high watermark. ConsumerManager#logEndOffsetIfKnownWithoutBlocking
reconstructs it as position + Consumer#currentLag (KIP-695, kafka-clients 3.0+),
both read in one breath on the thread that owns the consumer, with a zero-timeout
position read so nothing can block or send a request; EpochAndRecordsMap carries
the answer with the records. PartitionState checks the loaded map against it in
maybeRegisterNewPollBatchAsWork - after the epoch fence, BEFORE the truncation
and the per-record loop, which are the only two things that consult the map. So
the map is settled before anything can be skipped against it, and waiting costs
nothing: nothing consults the map until a record arrives to be consulted about.

ABSENCE IS NOT EVIDENCE. currentLag is empty until a fetch has happened and the
position read raises rather than blocking, so "not established" is a real
answer - the check then defers to the next batch. In the meantime the batch's
own records are a floor, because a record that arrived certainly exists; a floor
can only confirm a claim, never refute one, which is why it is safe to act on
with no watermark at all.

SAME POLICY, MORE COVERAGE. A refused map goes through
EncodedOffsetPair#handleUnreadableMetadata like every other payload this build
cannot read: under the default IGNORE the map is discarded, processing resumes
from the committed offset and the existing warn names the partition, the base
offset and this reason; under FAIL it throws. Nothing counts the discard - that
is docs/inflight/bug-no-metric-for-discarded-offset-metadata.md, cited from the
code. Because the check now reads the DECODED claim rather than the bytes, one
line covers run-length and bitset alike, and any encoding added later.

THE COMMITTED OFFSET IS PASSED, NOT DERIVED. PartitionState needs the offset its
map was loaded against, both to fall back to and to know whether there is a
claim at all. Deriving it from getOffsetToCommit() is wrong for a map with no
incomplete offsets - it answers highestSucceeded + 1 - and that silently
disarmed the check for every fully-completed map, which the bitset tests caught.

Proven by sabotage: with the call to
maybeVerifyLoadedOffsetMapAgainstThePartition removed and nothing else changed,
five of the eight cases in ImplausibleOffsetMapOnFirstBatchTest fail, including
the one that reads a record the partition really holds as completed - while the
three control arms (a map inside the partition, a bitset at the boundary, a
claim the records themselves corroborate) stay green, which is what tells you
the controls do not depend on the guard. EncoderOutputSurvivesDecodeValidationTest
keeps the encoder side: every shape it produces is measured against the rule
with the tightest honest bound there is, a partition ending exactly on the last
offset encoded.

MockConsumer, verified rather than assumed (kafka-clients 3.9.1): currentLag
answers endOffsets - position when updateEndOffsets has been called, and
OptionalLong.of(0) when it has not - not empty, as a real consumer answers
before its first fetch. An unprimed mock therefore understates where a partition
ends; nothing in the suite is affected, because the check only engages for a
partition whose committed metadata claims offsets above the committed one, and
ConsumerManagerLogEndOffsetTest pins all four behaviours so the next test to
reach for it does not rediscover them.

Left open, and recorded rather than carried silently: the decode-side ceiling
this branch previously had also stopped a huge INCOMPLETE run from being walked
into a TreeSet, and the lazy check cannot - it runs after the decode. That is
master's status quo rather than a regression, and it now has a note:
docs/inflight/bug-a-huge-incomplete-run-allocates-before-anything-can-check-it.md.

Co-authored-by: Claude Opus <noreply@anthropic.com>
@astubbs astubbs changed the title fix(offsets): a run length the partition cannot hold is an unreadable payload, not a completed range fix(offsets): an offset map claiming offsets the partition does not hold is refused at the first batch Sep 8, 2026
astubbs added a commit that referenced this pull request Sep 8, 2026
… left

#469 landed the two PartitionState cross-thread flags, measured then
fenced or redesigned, so tier 1 is down to #480 (being reworked off
the wire) and #477 (with a babysitter). #485, the control-arm
proof of the deadlock fix, is on master too.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
astubbs and others added 2 commits September 8, 2026 15:57
One conflict, in PartitionState: #469 removed the plain
stateChangedSinceCommitStart flag (replaced by the completion counters),
and this branch had inserted its loaded-map fields directly beneath it, so
the hunk carried the dead flag on this side. Resolved by keeping the new
fields and dropping the flag master removed. Main and test sources compile,
and the three test classes this branch owns pass on the merged tree.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
The worked example in the tooling doc was recorded from a real vet run and
shows the run-length plausibility note, which this branch deletes. The
sample is kept as the shape of the output and marked as not a citation,
per the file-refs paragraph marker, rather than rewritten to a different
note that would not match the rest of the recorded block.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

🧪🔒 Quarantine Lane Report

The quarantine lane is empty - no @Quarantined tests remain, so none ran.

Any earlier row on this PR asking for a @Quarantined annotation or a docs/quarantined-tests.md
entry to be deleted is withdrawn - there is nothing left to delete. A merge-blocking review
thread, if one was opened for that row, still has to be resolved by hand.

Lane: non-gating; rules: see the Quarantine Audit check.

No quarantined test changed outcome since the previous push.

Updated for b85862e · run 34296835392 · 2026-09-09 00:52 UTC

astubbs added a commit that referenced this pull request Sep 8, 2026
…s down to the run-length guard

The poller-death fix squash-merged, and its branch had rewritten item 2 of
the sweep gating list in process-candidate-ranking.md, which this branch had
already moved into release-v6-scope.md. The conflict resolves to the pointer
here and the rewritten item in the moved copy. #477 is ticked in tier
1, six of seven on master; #480 is the last, reworked off the wire and
level with master. #486 settled the fifth 857 item as the group
protocol and is green with the owner LGTM; one new fact from it is kept, that
the zombie-member probe line does not discriminate a PC-side hold from a
coordinator join phase.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@astubbs
astubbs marked this pull request as ready for review September 8, 2026 04:11
@astubbs

astubbs commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

@claude review this

@claude

claude Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 6m 38s —— View job


Review: fix(offsets) — plausibility check moves to the first batch

  • Gather context (PR body, diff, comments)
  • Read the check itself: PartitionState#maybeVerifyLoadedOffsetMapAgainstThePartition / claimsOffsetsThePartitionDoesNotHold
  • Read ConsumerManager#logEndOffsetIfKnownWithoutBlocking and EpochAndRecordsMap plumbing
  • Read the new tests (ImplausibleOffsetMapOnFirstBatchTest, ConsumerManagerLogEndOffsetTest)
  • Check the flagged duplicate-code report vs. ForeignOffsetMetadataOnAssignmentTest
  • Post review findings

Note up front: I confirmed via gh pr diff 480 --patch that the branch carries an earlier revision (assignment-time ListOffsets) as intermediate commits, later replaced by commit 9235306e7. I reviewed the net diff against master (gh pr diff 480), which is what actually ships — the analysis below is against that, not the superseded intermediate approach.

Design

The core idea is sound and the write-up in docs/solutions/architecture-patterns/bound-a-guard-with-ground-truth-not-a-plausible-number-2026-09-08.md earns its keep. I traced the boundary arithmetic by hand against the eight cases in ImplausibleOffsetMapOnFirstBatchTest:

  • claimsOffsetsThePartitionDoesNotHold(highestSeenOffset, logEndOffsetExclusive) = highestSeenOffset > logEndOffsetExclusive - 1 is off-by-one correct at both boundaries (aMapEndingOnTheLastOffsetThePartitionHoldsIsKept / aMapClaimingOneOffsetPastTheLastOneHeldIsRefused).
  • The "defer, never refute" contract for OptionalLong.empty() watermarks is correctly asymmetric — a batch's own records can only confirm a claim (lastOfBatch >= offsetHighestSeen), never refute one, so a broker hiccup can't cause a false rejection. Verified against anUnknownLogEndOffsetDefersTheCheckToTheNextBatch and aBatchReachingTheClaimCorroboratesItWithoutAWatermark.
  • Once corroborated (either way), loadedOffsetMapClaimIsUncorroborated is cleared unconditionally before the refusal check runs, so a discarded map is never re-litigated and a confirmed one is never re-checked — matches the "settled once" test.
  • The placement in maybeRegisterNewPollBatchAsWork (before maybeTruncateOrPruneTrackedOffsets and the per-record loop) is correct: those are the only two things that read the loaded map, so nothing can act on the bad claim first.
  • ConsumerManager#logEndOffsetIfKnownWithoutBlocking's position + currentLag reconstruction, the zero-timeout position read, and the blanket catch (Exception) all match the "must never block or throw" contract the javadoc states.
  • No leftover dead code from the superseded ListOffsets-at-assignment revision — grepped for UNKNOWN_PARTITION_CEILING/findHighestOffsetsHeld/highestOffsetPartitionCanHold, all clean.

Findings

1. Stale doc — docs/features/invalid-offset-metadata-policy.yaml still describes the removed design.
Lines 31-32 read:

A decoded map claiming offsets the partition does not hold is governed too: the end offsets of the partitions carrying metadata are read once per assignment, and a map reaching past the last offset a partition holds is treated as unreadable.
When those end offsets cannot be read - an unavailable leader, a timeout - the check stands down for that assignment and logs it...

That's the earlier ListOffsets-at-assignment revision. Commit 9235306e7 ("the plausibility check moves off the wire and onto the first batch") deleted that approach and moved the check to PartitionState#maybeVerifyLoadedOffsetMapAgainstThePartition, keyed off the first poll batch's currentLag, not an assignment-time request — but didn't update this file (it was last touched by an earlier commit on the branch). This is exactly the kind of drift docs/features/ exists to prevent, and it's user-facing feature documentation, which the PR checklist claims is up to date. Worth a one-line fix before merge:
Fix this →

2. Duplicate-code report — the bot flagged 23 lines shared between ForeignOffsetMetadataOnAssignmentTest.java:66 and ImplausibleOffsetMapOnFirstBatchTest.java:119 (both new/touched by this PR). Per AGENTS.md's PR-discipline rule, this is worth a look before merge — likely shared moduleWithCommittedMetadata/MockConsumer setup boilerplate that could move to a common test helper. Low severity (test-only), but it's a duplication this PR introduced, not inherited.

3. Minor / non-blocking:

  • ConsumerManager#logEndOffsetIfKnownWithoutBlocking's catch (Exception e) branch appears to be the line Codecov flagged as uncovered in this file — no test drives an actual thrown exception (e.g. IllegalStateException from a revoked partition). Not a correctness concern given the code is straightforward, just a coverage gap.
  • EncoderOutputSurvivesDecodeValidationTest.java adds import bz.stub.parallelconsumer.state.PartitionState; out of the file's existing import-group order (after lombok..., before org.apache.kafka...) — cosmetic only, no checkstyle import-order rule enforces it here.
  • The reused sentinel NO_OFFSET_MAP_WAS_LOADED = KAFKA_OFFSET_ABSENCE = -1L means "no map was loaded" and "committed offset is -1" are indistinguishable, but a real committed OffsetAndMetadata can't legitimately carry offset -1, so this isn't reachable in practice — just noting it since two different meanings share one constant.

Not a finding

The javadoc on maybeRegisterNewPollBatchAsWork has an unusually thorough thread-model discussion for offsetHighestSeen/offsetHighestSucceeded (single control-thread writer). It doesn't explicitly extend that discussion to the new loadedOffsetMapClaimIsUncorroborated field, but that field is only touched from the same call path, so it's covered by the same invariant — not flagging this as it doesn't need its own @GuardedBy/ledger entry per the engine's own AGENTS.md rule (single-writer plain field, not shared).

Overall: the core logic is correct and well-tested (eight cases covering both encodings, both policies, both sides of the boundary, deferral and corroboration). The one thing I'd want fixed before merge is the stale YAML doc, since it actively misdescribes the shipped design.
· branch fix/run-length-plausibility-ceiling

…a, not two copies

The duplicate-code check on #480 flagged 23 lines
shared between ImplausibleOffsetMapOnFirstBatchTest and
ForeignOffsetMetadataOnAssignmentTest: the setup that gives a MockConsumer a
committed offset with metadata on it and wraps it in a PCModuleTestEnv. This PR
introduced the second copy, so it is this PR's to remove.

Lifted into OffsetCodecTestUtils, which already owns the shared helpers for
these tests, rather than into a new util - docs/testing.md's rule is to extend
the existing one. The consumer is now owned by the helper: neither caller
touched it after construction, and a test that needs it can read
module.options().getConsumer().

Both tests keep a one-line private wrapper naming their own partition and
committed offset, so the call sites read as they did.

Co-authored-by: Claude Opus <noreply@anthropic.com>

@astubbs astubbs left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

lgtm

…eck, not the assignment one

Review finding on #480: the feature record still said
the end offsets of the partitions carrying metadata are read once per
assignment, and that the check stands down for that assignment when they cannot
be read. That was the ListOffsets revision this branch replaced; the shipped
check reads the watermark the first batch already carries and defers to the next
batch when it has none.

The file was correct when it was written and went stale inside the same PR,
which is the drift docs/features/ exists to catch and check-docs-data.sh cannot:
it validates structure, never truth. Third time this record has been falsified
by the work it describes - the first two are in
docs/inflight/pr-207-offset-encoding-policy.md.

Also moves the PartitionState import in EncoderOutputSurvivesDecodeValidationTest
into its group, which the same review flagged.

Co-authored-by: Claude Opus <noreply@anthropic.com>
@astubbs

astubbs commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

All three findings addressed - thank you, the first one was real and I had missed it.

1. Stale docs/features/invalid-offset-metadata-policy.yaml - fixed in 97f1cd3. You are right about the mechanism as well as the text: the record was correct when it was written and went stale inside the same PR, because the ListOffsets revision wrote it and the rework did not come back. The boundary now says what ships - the first batch carries where the log ended when it was fetched, the map is refused before any record is checked against it, and no broker request is made for it; when no watermark has arrived the check defers to the next batch rather than judging. Worth noting for anyone reading later: check-docs-data.sh passed over both versions, because it validates structure and never truth.

2. Duplicate code - fixed in af20b08, before this review landed; the thread is resolved. The shared moduleWithCommittedMetadata setup now lives once in OffsetCodecTestUtils.

3. Minor:

  • catch (Exception) uncovered - it is covered, and by two of the four cases in ConsumerManagerLogEndOffsetTest: aPartitionWithNoPositionAnswersNotEstablishedRatherThanBlocking and anUnassignedPartitionAnswersNotEstablished both reach it through MockConsumer#position raising IllegalStateException, which is the same shape as the revoked-partition case you name. If Codecov still shows the line uncovered, that report predates those tests rather than describing the branch head - worth a re-check after this push rather than a new test.
  • Import order - moved into its group in 97f1cd3.
  • NO_OFFSET_MAP_WAS_LOADED sharing KAFKA_OFFSET_ABSENCE - agreed on both halves: two meanings on one constant, and unreachable in practice because a committed OffsetAndMetadata cannot carry -1. Left as is deliberately rather than overlooked; the alternative (a boxed OptionalLong field on every partition state) costs more than the ambiguity does, and the constant is named for the meaning this class uses it for.

On the "not a finding" note about loadedOffsetMapClaimIsUncorroborated: agreed, and for the record it is written and read only from maybeRegisterNewPollBatchAsWork, which is control-thread only - same single-writer plain-field argument as the two longs beside it.

…he mock

bin/check-pr-analysis-surfaces.sh reported it on a line this PR wrote, and it
is right: nothing in the helper needs MockConsumer, and the wider type is what
the production wrapper takes anyway.

The other two findings on this PR's lines are answered in the PR conversation
rather than changed: ConsumerManager's commitRequested is the known
non-volatile field docs/refactoring.md tracks - it moved lines because this PR
added a method after it - and the not-initialised-in-constructor report on
PartitionState's new constructor is the detector failing to see through
initStateFromOffsetData, where a null would be a loud failure and the
field-initialiser that silences it would be a silent one.

Co-authored-by: Claude Opus <noreply@anthropic.com>
@astubbs

astubbs commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

bin/check-pr-analysis-surfaces.sh 480 reports three findings on lines this PR wrote. One is fixed, two are answered.

Fixed - acf29b6: ConsumerManagerLogEndOffsetTest.managerFor took MockConsumer where nothing in it needs more than Consumer, which is what the production wrapper takes anyway.

Not changed - ConsumerManager "commitRequested may not yield the most recent write". That is the pre-existing non-volatile field docs/refactoring.md tracks as the last one on its list. It appears as mine only because this PR added a method directly after onCommitRequested(), moving the line SpotBugs attributes it to. It also is not a volatile-shaped fix - #469 established the rule that volatile fixes a one-writer field, not a shared one, and this flag is written by the control thread and cleared by the poll thread. Fixing it belongs with that ledger entry, not here.

Not changed - PartitionState "non-null field incompleteOffsets is not initialized by the new constructor". The field is initialised on every path, by initStateFromOffsetData, which both constructors call unconditionally; the detector cannot see through the helper. The obvious silencer - a field initialiser - would make the class strictly worse: an uninitialised map would then read as empty state rather than raising, which is a silent wrong answer in the one place this project cares most about (an empty incompletes map means "everything succeeded"). Left loud on purpose.

@astubbs

astubbs commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

Duplication follow-up on the final head, since both engines re-ran:

  • PMD CPD: no new clones introduced by this PR - 27 clones on the PR and 27 on base, +0.00%. The clone the inline detector flagged (the moduleWithCommittedMetadata setup) is gone, lifted into OffsetCodecTestUtils in af20b08.
  • jscpd reports two remaining "new clones", and both are import blocks: 11 lines at ImplausibleOffsetMapOnFirstBatchTest:10 against ExternalEnginePipelineBufferTest:9, and 9 lines at ConsumerManagerLogEndOffsetTest:8 against PartitionStateRegistrationOrder370Test:13. Imports cannot be shared, which is why PMD CPD - which ignores them - sees none. Not acting on these.
  • The file-similarity engine's one new pair, ForeignOffsetMetadataOnAssignmentTest ↔ OffsetCodecTestUtils at 31.3%, is the result of the dedupe rather than duplication: the helper now lives in the utils file and the test calls it, so the two share vocabulary while sharing no logic.

astubbs added a commit that referenced this pull request Sep 8, 2026
…ency

The registry entry for OffsetMapCodecManager said #480 added a
blocking endOffsets round trip to decode-on-assignment. That was its
first revision; the rework moved the plausibility check off the wire
into PartitionState, settled lazily against a watermark ConsumerManager
reads without blocking. The codec only passes the committed offset
through, so the planned encode/decode split inherits no broker lookup.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@astubbs
astubbs merged commit 0ca787c into master Sep 9, 2026
30 of 32 checks passed
@astubbs
astubbs deleted the fix/run-length-plausibility-ceiling branch September 9, 2026 01:07
astubbs added a commit that referenced this pull request Sep 9, 2026
The last tier 1 item landed on 2026-09-09: the run-length plausibility
guard, reworked off the wire before merge so the claim is settled at the
first poll batch against a watermark read without blocking. The
INSTANCE_STALL load arm merged the same hour, closing that line's box;
what the experiment runner stays for is the ZOMBIE_MEMBER seeds and the
busy-observation calibration, named in its row. Every box in tier 1 is
ticked.

Claude-Session: 460f7df9-dcc2-4b00-a9f9-62f3a2c6d5e4
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Sep 9, 2026
…d already answers this

#480 landed on master while this branch was open and added
committedOffsetTheMapWasLoadedAgainst to the same constructor, defaulting to NO_OFFSET_MAP_WAS_LOADED
- which is KAFKA_OFFSET_ABSENCE again. So the next reader arrives at two fields that look like the
same fact and deletes one. The merge is clean and the two do not conflict; what was missing was the
record of why they are different.

THE DISCRIMINATOR is that field's own javadoc: NO_OFFSET_MAP_WAS_LOADED is also what "any caller that
did not load this state from a committed offset map" passes, which includes every test that builds a
PartitionState directly. commitDataWasLoadedOnAssignment is derived from the offset data itself, so it
answers what the codec produced rather than what the caller remembered to say.

MEASURED, NOT ARGUED. Substituting committedOffsetTheMapWasLoadedAgainst == NO_OFFSET_MAP_WAS_LOADED
for the field fails six assertions across three classes - both genuine truncation branches in
PartitionStateBootstrapTruncation162Test, two arms of PartitionStateCommittedOffsetTest, and two arms
of PartitionStateAbsentCommitData162Test - because those partitions DID load commit data and would go
quiet. The javadoc records that, and names what would reopen it: the four-argument constructor gaining
the committed offset, at which point the two facts really would be one and this field should be
deleted rather than kept in sync.

ALSO RECORDED: #480's refusal path calls initStateFromOffsetData a third time, and deliberately
does not re-sample this field either. A refused map still leaves a real committed offset to bootstrap
against - that is exactly what #480 falls back to - so the truncation branches stay correct for
it, which is the opposite of the absent-commit-data case.

VERIFIED ON THE MERGED TREE, not assumed: PartitionStateAbsentCommitData162Test,
PartitionStateBootstrapTruncation162Test, PartitionStateCommittedOffsetTest, #480's
ImplausibleOffsetMapOnFirstBatchTest and EncoderOutputSurvivesDecodeValidationTest,
ForeignOffsetMetadataOnAssignmentTest, ConsumerManagerLogEndOffsetTest and the partition-state and
offsets unit suites - 273 tests, all green.

Co-Authored-By: Claude Opus <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xoi3HYae8pjsEatuNFKieD
astubbs added a commit that referenced this pull request Sep 9, 2026
This branch is docs-only - two markdown files differ from master - so neither
red it drew can be its own. Both are recorded against the notes that own them,
and reading each occurrence turned up a correction the note needed.

INTEGRATION TESTS, on this PR's own head. The shape in
ci-broker-container-exit-126-is-undiagnosable.md, exactly: one class fell slowly
at the container-start timeout and every other broker class fell in
milliseconds with NoClassDefFoundError on BrokerIntegrationTest. Codecov renders
that as "20 Tests Failed"; it is one failure.

What is new is that the cause was in the log all along. Testcontainers prints
the failed container's own output at GenericContainer#tryStart, one line below
the "Wait strategy failed" line the note's signature block quotes, and it reads
"sh: /tmp/testcontainers_start.sh: Text file busy" - ETXTBSY, exec refused
because the starter script was still open for writing. The container command
waits for that script to EXIST and then executes it, so a file the daemon has
created but not finished extracting is executable-shaped and not executable, and
the shell reports the refusal as exit 126. A Testcontainers start race, widened
by a busy runner; nothing in the product, the image or the Kafka configuration.

Refetching #347's 2026-08-25 job, the run this note was written from,
shows the identical two lines. So the note's premise under item 1 - "the
container's stdout is nowhere in the job log" - was false of its own founding
evidence. The instrument was fine; the triage stopped one line short. That
correction is proposed in the note's vetting marker rather than applied, because
the note's impact is misdirection and those are the owner's to close.

CHAOS PAIN SUITE 4/4, on #495 - also docs-only, one
README paragraph. ChaosChurnStormIT NO_PROGRESS at 96632/100000 for 30s against
a 30s bound, seed 3717713223451201639. It goes in
test-no-progress-window-may-not-transfer-to-w1.md as one appended row, with the
part that makes it worth having: the fleet KEPT CONSUMING, reaching 99569 by the
settle summary, so the outstanding count fell from 3368 to 431 - inside the
TAIL_SLACK of 500. That is the "drains" branch of the deciding experiment the
note states. It is the weak form and the row says so: no recovery diagnostic, so
the counter compared is the ledger's rather than the probe's, and the conductor's
churn ended 10s after the firing, so it is recovery-once-churn-stops.

The bigger finding is that the deciding experiment had already been answered
twice and this note never took delivery. test-857-churn-storm-async-stalls.md
drained six for six on seed 9086872209853284830 with the diagnostic engaged, and
its 2026-09-08 sighting drained seed 5650361238717170909 from 93487 to
101070/100000 at an outstanding count of 6513 - larger than every row in the
table. That sighting says outright that this note owns the question; the pointer
was written and nobody followed it. Proposed in the vetting marker for the same
reason as above.

RULED OUT, with a control arm rather than an argument. The six merges that
landed on master today - #480, #487, #488, #491,
#492 and #493 - are the obvious suspects for a chaos red, and
#491 does touch ProgressProbe.java. Its diff does not touch the
NO_PROGRESS path at all - it adds the UNCOMMITTED_COMPLETIONS detector, edits
javadoc, and refactors the finding sink - and the same test PASSED on two heads
that carry every one of those merges, four and six minutes either side of the
failing run. A deterministic regression is excluded; a rate change is not, and
one failure could not establish one.

Nothing quarantined. The container fault has no test to quarantine and the
exit-126 note says a re-run is the correct response there. The chaos firing has
no rate that rule 1 would accept, and docs/quarantined-tests.md is empty - which
is the state to preserve.

Co-Authored-By: Claude Opus <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xoi3HYae8pjsEatuNFKieD
astubbs added a commit that referenced this pull request Sep 9, 2026
…bsence is recorded rather than inferred (#494)

WHAT WAS WRONG. PartitionState#maybeTruncateBelowOrAbove took its bootstrap expectation from
getOffsetToCommit() and never asked whether commit data existed. A partition assigned with no
committed offset is built from OffsetMapCodecManager.HighestOffsetAndIncompletes.of(), so
offsetHighestSucceeded is KAFKA_OFFSET_ABSENCE and the expectation computes to 0 - and any first poll
above offset 0 took the above-expected branch, logged "Truncating state - removing records lower
than ..." at WARN, and pruned nothing, because there was nothing loaded to prune. False in both
halves. It fired for the normal state of a new consumer group, and for a group whose committed offset
had aged out of the offsets topic. That is the shape reported upstream on 0.5.2.7 - after
confluentinc#563 shipped and fixed the OTHER form of the same string - alongside a broker CLI
screenshot showing an empty CURRENT-OFFSET for exactly the partitions that warned.

THE BEHAVIOUR NOW. Absent commit data reports at INFO and takes no truncation branch: "No committed
offset for partition N of topic T - starting from the first polled offset X. Nothing was loaded, so
nothing is being removed. Expected for a new consumer group, or where the group's committed offset has
aged out of the offsets topic." The WARN is unchanged for the genuine cases - a committed offset the
broker no longer has records for, compaction, a raised committed offset - so an operator alerting on
"Truncating state" keeps exactly the alert they had, minus the false firings.

WHY NOT THE SENTINEL, WHICH IS THE WHOLE OF THE DESIGN. The cheap check reads
offsetHighestSucceeded == KAFKA_OFFSET_ABSENCE, and it is WRONG: a real commit filed at offset 0 with
no offset map decodes to a highest-seen of 0 - 1, which is that same sentinel, with commit data that
genuinely existed and an expectation of 0 that is genuinely meant. Testing the sentinel would silence
the true truncation report for exactly the partition most likely to be caught by retention - the one
that has processed nothing yet. -1 means "nothing succeeded", not "no commit arrived". So the absence
is carried from where it is known: every decode path yields a PRESENT
HighestOffsetAndIncompletes#getHighestSeenOffset, because every decode has a committed offset to be
relative to, and only the default entry yields an empty one. PartitionState samples that into a final
boolean in its constructor, before initStateFromOffsetData collapses the Optional into the sentinel -
the engine AGENTS.md collapse-parallel-state rule applied to a fact rather than a cache. The field
being final is also the whole thread-safety story: publication is the constructor's freeze, and it is
read on the control thread in the same statement that closes bootstrapPhase.

RED FIRST, THEN THE CONTROL ARM. PartitionStateAbsentCommitData162Test was red on master in three arms
- the first poll above 0 warned, the assignment path through a consumer reporting no committed offset
warned, and the at-offset-0 arm had no INFO line to find - and green after. The fourth arm is the
control: same sentinel, same expectation of 0, same first polled offset, one term differing (commit
data existed), and it must still warn. Prediction stated before running: substituting the sentinel
shorthand for the recorded fact fails ONLY that arm. Run with the shorthand substituted, it did
exactly that - one failure, the control arm, with the absent-data arms and
PartitionStateBootstrapTruncation162Test's two genuine branches still green.

A CLAIM CORRECTED ON THE WAY PAST. The inflight note said #217's foreign-metadata recovery
lands on the same default entry through catch (OffsetDecodingError), and so inherits the false
warning. It does not. Under the runtime-default IGNORE policy,
EncodedOffsetPair#handleUnreadableMetadata returns of(baseOffset - 1) - commit data carrying the
committed offset - so such a partition bootstraps with a real expectation and the truncation branches
stay correct for it; under FAIL the typed exception propagates instead. Neither reaches the default
entry, and the only production caller of OffsetEncoding#decode is EncodedOffsetPair#unwrap, which has
test callers only. Asserted by the test's last arm; the now-dead catch is recorded in
docs/refactoring.md.

DEFECT-CLASS SWEEP - other places deriving "no commit data" from sentinel arithmetic. Every reader of
KAFKA_OFFSET_ABSENCE and of the offset accessors in main was checked, and none is the same defect:
OffsetSimultaneousEncoder's highestSucceededOffset == KAFKA_OFFSET_ABSENCE asks about SUCCESS, which
the sentinel answers faithfully; isRecordPreviouslyCompleted's recOffset <= offsetHighestSucceeded is
correct under both readings; RemovedPartitionState returns the sentinel as a deliberate no-op contract
and never reaches truncation; RunLengthEncoder's use is a loop initialiser. Two sites borrow the
constant for a second meaning without being defects, and are recorded in docs/refactoring.md:
getOffsetHighestSequentialSucceeded uses it as a below-every-offset floor for ceiling(), and
PartitionStateManager#incrementPartitionAssignmentEpoch defaults an EPOCH from an OFFSET constant.

WHY THIS CLOSES THE ISSUE. All three defects behind confluentinc#546's one warning string are settled
here: the "expected 1" RunLength decode by inheritance from confluentinc#563; the "expected 0 from
loaded commit data" form by this change; and the "reset to an earlier offset" branch refuted as a
PC-reachable defect by #484. Upstream's own issue stays open - that repository is no longer
maintained.

RECORDS. docs/inflight/bug-162-offset-state-truncation.md is deleted, which is its own "Delete when"
condition. What outlives it - the three-defects reading, the sentinel-versus-fact discriminator and
the #217 correction - is migrated to docs/solutions/logic-errors/. The drafted mirror reply
moves to docs/inflight/issue-response-162.md, held for the pre-release sweep rather than deleted with
this PR. Citations in process-candidate-ranking.md and upstream-mirror-bodies-are-stale.md are
repaired, and src/docs/development/upstream-map.yaml records the lifecycle transition.

Closes #162

Upstream-Issue: confluentinc#546

A SIBLING FIELD, AND WHY IT IS NOT THE SAME FACT. #480 landed while this was open and
added committedOffsetTheMapWasLoadedAgainst to the same constructor, defaulting to the same
absence sentinel, so the next reader meets two fields that look like one and deletes one. They
differ: that field records what the caller passed, and NO_OFFSET_MAP_WAS_LOADED is also what
every direct constructor call passes; this one is derived from the offset data itself, so it
answers what the codec produced. Measured, not argued - substituting one for the other fails
six assertions across three test classes, because partitions that did load commit data would
go quiet. The javadoc records that and names what would collapse the two into one: the
constructor gaining the committed offset, at which point this field is deleted rather than
kept in sync. #480's refusal path, which re-initialises from the offset data a third
time, deliberately does not re-sample this field either: a refused map still leaves a real
committed offset to bootstrap against.

Co-authored-by: Claude Opus (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Sep 10, 2026
…ut it (#475)

0.6.0.0 is a bugs-only stability release, and it is overdue: the fork has
carried the fixes for upstream's most-reported defects for months while the
release waited on features. This note is the source of truth for cutting it -
the owner's decisions, the merge queue from those decisions to the tag, every
open question, and the checks that make the published artefacts true on the
day. #197 is the tracking handle and its body points here; nothing is
maintained on the issue.

THE DECISIONS, 2026-09-07 and confirmed since. The bar is the stability
release and nothing else; Streams and Connect move to the next-0x horizon in
the roadmap data; the producer-recovery stack is outside v6. The release
claim carries two named exceptions rather than waiting on them: the
transactional revoke wait (#44, bounded since #466, not yet
declined) and, from 2026-09-09, the poisoned-transaction wedge, both in the
transactional producer mode only. The merge queue closed on 2026-09-09; later
finds are 0.6.0.x unless they are data loss on a default configuration.

THE BURN-DOWN, recorded as each merge landed. Tier 1, the self-contained
fixes, is complete: the last two to join were the batchSize bound
(#496) and the gate-latch warning (#497), both decided v6-sized
on the day the queue closed. Tier 3, the plumbing, has the changelog section
finalised as the release notes and the claim amended (#498) and the
release page body posted verbatim from CHANGELOG.md by release.yml (#501,
closing #199); what remains is the tag-day checks, the drafted issue
responses, and the tag. A can-follow list names what is deliberately
not v6.

WHAT THE RELEASE NOTE SAYS ABOUT THE confluentinc#857 FAMILY, each line with
the PR that settled it: the revoke-path deadlock proven by control arm, the
eager stall withdrawn as a timing bound that flips with the processor count,
the fifth item measured as the consumer-group protocol under churn rather
than PC, the poller death fixed, the instance-stall sightings classified as
worker saturation from the load side. The intake stall #471 found has
its verdict from #487: the record-intake load gate is what stops
intake, head-of-line blocking is not why, and any instance that retries
forever while a fraction of its stream never succeeds latches eventually at a
computable threshold, idle or not. There is no gate fix; the fix bounds the
failures (#149's dead-letter queue), and until then #497 makes
the state visible. One arm stays unattributed and is named as such.

DATA LOSS AND DUPLICATES: the bug-162 replay branch refuted and the false
truncation warning fixed (#494, closing #162).

KNOWN UNKNOWNS, split in two so nothing is papered over: what is still
unknown at the cut - the shard half of the per-shard liveness blind spot, the
flake rows kept open with reasons, the maturity claim - and, under its own
heading, the unknowns made known on 2026-09-08 and how each was settled.

TAG-DAY CHECKS, folded in from the retired blockers note: master green with
the lanes known to lie named, the churn scenario's no-progress window settled
by replay and widened in #499 with the rebalance-dwell bound named as
that class's survivor, the Lincheck lane's timeout raised against runner-speed
variance, the rename named in both groupId and packages, the README's
trademark wording claiming nothing it does not have (#495), and the
changelog section as the release notes since #498, posted as the release
body by release.yml since #501.

ONE CHANGELOG EDIT, on the owner's decision of 2026-09-10: the "size of this
release" table of merged-PR and line counts is removed. Measured on a branch,
carrying its own re-measure instruction, stale from the next merge on; the
notes make their claim through the fixes they name.

Also here: a ci- note from this PR's own last review round - the file-refs
gate reads a token as a path only with two segments, so the changelog rename
left this branch-only note naming the old file with nothing to go red, and
the note records the allow-list that would close it; the vetting sweep's
reading and every open bug note's disposition,
moved into the ranking note where the tiers override them; a dated survey of
upstream items with no fix and no response as its own deferred note; the
refactoring registry's codec entry corrected for what #480 did and did
not change; and the confluentinc#546 manifest entry marked merged. Two notes
retired with their content migrated: the blockers register and the
merge-order plan for a far larger v6. The question this note began as, "when
is v6 good enough?", was answered on 2026-09-08 and the file renamed.

Serves #197; closes nothing. The tracker closes when
the tag is cut.

Co-authored-by: Claude Fable 5.1 (1M context) <noreply@anthropic.com>
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.

1 participant