Skip to content

test(core): the revoke-path commit omits offsets for records it already produced - #436

Merged
astubbs merged 13 commits into
masterfrom
debug/revoke-commit-mailbox-drain
Sep 7, 2026
Merged

astubbs merged 13 commits into
masterfrom
debug/revoke-commit-mailbox-drain

Conversation

@astubbs

@astubbs astubbs commented Sep 3, 2026 •

Copy link
Copy Markdown
Owner

Relates to #173 (confluentinc#777) as a candidate cause only - see "Not established" below. This PR closes nothing.

Description

Diagnosis, not a fix. It settles a question an earlier working note left open, and settles it the opposite way to the guess the note offered.

The question

The note recording this gap was explicit that one thing was not established and that it was the whole question - "whether the window is reachable in practice". It offered a reason it might not be: the produce read lock is held across the send and its acks, and a commit cannot start while any read lock is held, so the mailbox may in fact be empty of produced work whenever a commit can begin.

The answer: reachable, and the lock discipline is what makes it so

That argument is backwards. The ordering is send -> addToMailbox -> release the read lock, not send -> release -> mailbox. cleanUpContext is the single release point, runs in runUserFunction's finally, and its own javadoc states the contract: the lock is released only once every WorkContainer of the context "has been safely returned to the controller's inbound queue".

So a returned produce lock guarantees the work is already queued, and a commit granted the write lock always has undrained work in front of it. The lock discipline does not close the window - it guarantees the window is open. What closes it is the drain, and only the control loop performs one.

It bites because PartitionState#onSuccess - the only thing that marks a partition dirty on a success - is reachable from processWorkCompleteMailBox and nowhere else in main. The control loop takes the commit lock, drains, then collects offsets. tryCommitOffsetsOnRevoke takes the lock and collects, skipping the drain. So it publishes a transaction containing a record whose source offset it omits: the output is committed, the input is not, and the next owner reprocesses that input and produces the output again. Exactly-once degrades to at-least-once on that path.

The controlled experiment

Prediction stated before the run, and it held exactly.

Arm The one term that moves Result
aRevokeTimeCommitIncludesTheOffsetOfEveryRecordItAlreadyProduced revoke commits as it does today RED 5/5 - sends offset 1, omitting the offset of a record inside the transaction it just committed
aRevokeTimeCommitIncludesThatOffsetWhenTheMailboxIsDrainedFirst processWorkCompleteMailBox(ZERO) inserted immediately before the revoke, nothing else GREEN - sends offset 2

Same magnitude, different position, so the outcome is attributable to the drain and not to added latency or to anything else the revoke path does. Deterministic - hand-driven control loop on a mocked producer, no broker, no load, no timing. This is not a flake and must not be treated as one.

Both arms live in ProducerManagerTest, beside the C9 proofs they extend, rather than in a new file.

Why there is no fix here

The obvious one-line fix - drain from onPartitionsRevoked - is a trap this repo has already paid for. The revoke callback runs on the broker-poll thread, and the drain mutates WorkManager / PartitionStateManager state that every other mutation reaches from the control thread. That is the same shape of change that corrupted numberRecordsOutForProcessing in #29, measured at -8, -16, -20, -20, -20 against a truth of 0. docs/solutions/architecture-patterns/two-threads-one-consumer-why-the-commit-seam-keeps-deadlocking.md names this exact hazard, and records that the seam has been patched four times and never restructured.

Note also that the control loop already declines to commit during a rebalance, but the drain is not gated by that flag - the control thread keeps draining while a revoke is in progress, so a poll-thread drain would race it.

The tracking note lists three candidate dispositions and what each costs, including why the cheap "check the mailbox first" version leaves a narrower version of the same race - and a fix that narrows a data-loss window without closing it is worse than none, because it reads as closed. Picking between them is a thread-ownership decision at the commit seam. The precedent for splitting it out is this suite's own: #262's residuals commit, "a main-code correctness fix deserves its own change and its own reviewer".

Consequences carried in the same change

  • C9 NO_PRODUCE_WITHOUT_ITS_OFFSET and C4 OFFSET_AND_RECORDS_ATOMIC both move PROVED -> REFUTED. Review found the proof does not only falsify C9, and the reason C4 follows is stronger than under-reporting: the two claims are about the same commit, and one run falsifies both - a transaction carrying offset 1's output while committing offset 1 rather than 2. Leaving C4 PROVED beside a refuted C9 would have had the register assert and deny one observation. C4's own exemption does not cover it: that exemption is marker-delivery ordering within a commit, and here the offset is never committed by that transaction at all. Both keep their control-loop proofs verbatim, because that half still holds.
  • C14 RESULTS_EXACTLY_ONCE_UNDER_FAILURE is deliberately left PROVED, with a scope note. The route from the omitted offset to a duplicated result is sound - redelivery, re-produce, duplicate - but no duplicate has been observed, and C14's own record says its RED and GREEN were each seen rather than argued. Refuting it on reasoning would make it the register's first argued status and break the observed-versus-argued distinction that is the register's whole value. The claim now names what would settle it: a broker-level rebalance reproduction showing a duplicated result. Operator ruling.
  • The documented sentence in ParallelConsumerOptions is deliberately left alone. Status.REFUTED says the disposition (correct the docs or file the defect) is a triage decision; the note is the defect being filed, and softening the promise is the wrong half of that choice to take unilaterally.
  • The red arm is @Quarantined, not @Disabled, so the proof keeps executing and the lane will demand its removal the day it passes. It is deliberately not @ProvesClaim: the coverage guard rejects a proof the gating lanes exclude, and is right to, so C9 keeps its enforced coverage from the two control-loop proofs that really run. Registry entry added, with the unusual "why quarantined rather than fixed" spelled out.
  • STRATEGY.md said in terms that no claim in the register is refuted, and the README's machine-checked list carried the guarantee unqualified. Both corrected - a register written to fire against us is worth nothing if the finding gets softened instead of published. The README caution names both refuted guarantees and states that the front-page exactly-once promise is not refuted, so nobody infers the widest reading; the STRATEGY.md paragraph names the refuted claims instead of counting statuses, because the count it carried would have been wrong the first time one moved. README regenerated from the template, never edited directly.

Not established, and deliberately not claimed

Settled after review, and recorded in the note rather than only here

Where the fix belongs, checked against #408 rather than guessed. That PR declines the revoke commit only when the transaction lock is contended - its own amended test accepts "committed inline if the dwell had already ended". The uncontended inline commit is exactly this defect's path, so #408 neither narrows nor widens it. What it establishes is machinery a fix reuses. The recorded position: decline unconditionally in transactional mode, as its own PR cut from master, resolving the collision on tryCommitOffsetsOnRevoke at merge rather than by relocating either change.

The one question that decides whether that fix is correct is not established, and the note says so in terms. On decline, what becomes of the transaction's already-produced output - aborted (exactly-once preserved) or committed later without the revoked offset (the same defect through a different door)? #408's record is silent on it. It has to be run, not argued; the un-quarantined proof plus a broker-level no-duplicate check is the instrument.

The concurrency annotations cannot express this yet, and declaring one would make it worse. RacerD consumes a @ThreadConfined declaration without checking it, so a confinement claim over the state the drain mutates would silence the detector rather than inform it. #433 hit this same seam from the other direction while confining lastCommitTime and backed off for the same reason - independent corroboration. The rule lives in the core AGENTS.md; the note carries only what is specific to this defect, including the obligation on whoever closes it: the declaration and its runtime assertion go in the same change as the fix.

A review-route finding rode along, because this PR is where it recurred. The dispatch route to the automated reviewer concluded success and posted nothing, for the second recorded time; the mention route posted within minutes. Recorded in the solutions write-up with what the second occurrence isolates, and docs/ci.md now carries the consequence beside the dispatch command.

Checklist

  • Docs updated - STRATEGY.md, src/docs/README_TEMPLATE.adoc (+ regenerated README.adoc), docs/quarantined-tests.md, and the tracking note
  • User-facing feature documentation data added under docs/features/ - N/A - no feature; the user-facing consequence is a CAUTION in the README's transactional section, which is where that guarantee is published
  • Tests added/updated - two arms in ProducerManagerTest: the quarantined proof and its control
  • docs/inflight/ working note started at the PR's first commit - docs/inflight/core-revoke-commit-skips-the-work-mailbox-drain.md, carrying the settled diagnosis. It shares a slug with the pre-existing note on origin/fix/803-bound-transactional-revoke-wait, deliberately: same subject, so the branches conflict onto the settled version rather than silently duplicating
  • Title & body reflect the final content of this PR
  • Ran ce-simplify and ce-code-review locally - N/A - would rather spend the review on the PR; @claude review this has not been requested yet, and is the user's call

Verification run locally: bin/check-all.sh clean; bin/ci-unit-test.sh BUILD SUCCESS with the quarantined arm correctly excluded from the gating lane; the quarantine lane re-run confirms it still executes and fails-as-expected.

…dy produced

Settles the one thing an earlier note left open, and settles it the other way.

The note recording this gap said the whole question was "whether the window is reachable in
practice", and offered a reason it might not be: the produce read lock is held across the send and
its acks, and a commit cannot start while any read lock is held, so the mailbox might always be
empty of produced work whenever a commit can begin.

That argument is backwards. The ordering is send -> addToMailbox -> release the read lock, not
send -> release -> mailbox: cleanUpContext is the single release point, runs in runUserFunction's
finally, and its javadoc states the contract outright. So a returned produce lock GUARANTEES the
work is already queued, and a commit granted the write lock always has undrained work in front of
it. The lock discipline does not close the window - it guarantees the window is open. What closes
it is the drain, and only the control loop performs one.

The gap bites because PartitionState#onSuccess - the only thing marking a partition dirty on a
success - is reachable from processWorkCompleteMailBox and nowhere else in main. The control loop
takes the commit lock, drains, then collects offsets. tryCommitOffsetsOnRevoke takes the lock and
collects, skipping the drain, so it publishes a transaction containing a record whose source offset
it omits: output committed, input not, next owner reprocesses it. Exactly-once degrades to
at-least-once on that path.

Controlled experiment, prediction stated before the run and held exactly. Treatment - the revoke as
it stands - sends offset 1 where 2 is required, RED 5/5, deterministic, no broker and no timing.
Control arm - identical but for a processWorkCompleteMailBox call inserted immediately before the
revoke, nothing else moved - passes. Same magnitude, different position, so the drain is the term.
Both arms live in ProducerManagerTest beside the C9 proofs they extend.

NOT FIXED HERE, on purpose. The revoke callback runs on the broker-poll thread and the drain mutates
control-thread-confined WorkManager state, so the obvious one-line fix is the same cross-thread
mutation that corrupted numberRecordsOutForProcessing in #29 (measured -8, -16, -20, -20, -20
against a truth of 0). The fix is a thread-ownership decision at a seam this project has patched four
times and never restructured; the tracking note lists the candidates and what each costs. Precedent
for splitting it out is #262's own residuals commit: a main-code correctness fix deserves its
own change and its own reviewer.

The red arm is @Quarantined rather than @disabled, so the proof keeps executing and the lane will
demand its removal the day it passes. It is deliberately NOT @ProvesClaim - the coverage guard
rejects a proof the gating lanes exclude, and is right to, so C9 keeps its enforced coverage from
the two control-loop proofs that really run.

C9 NO_PRODUCE_WITHOUT_ITS_OFFSET moves PROVED -> REFUTED: the claim is written as a property of the
system and one reachable path breaks it. The register records both halves rather than replacing one
with the other. The documented sentence in ParallelConsumerOptions is left alone - REFUTED says the
disposition is a triage decision, and the note is the defect being filed; softening the promise is
the wrong half of that choice to take unilaterally.

STRATEGY.md said in terms that no claim in the register is refuted, and the README's machine-checked
list carried the guarantee unqualified. Both are corrected, because a register written to fire
against us is worth nothing if the finding gets softened instead of published.

Not established, and said so in the note: field impact (the proof is in-process against a mocked
producer), whether #408 narrows or widens it, and whether this is the mechanism behind
#173 / confluentinc#777, which reports this symptom from the field - a candidate cause, not an
attribution.
@github-actions

github-actions Bot commented Sep 3, 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 3, 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 28 26 🫤 +2
Duplicated lines 917 857 :face_with_raised_eyebrow: +60
Duplication 0.38% 0.36% 🫤 +0.03%
Rule Limit Status
Max duplication 0.5% ✅ Pass (0.38%)
Max increase vs base +0.1% ✅ Pass (+0.03%)
⚠️ 2 new clones introduced
  • 11 lines (101 tokens): parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java:556 <-> parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java:1151
  • 19 lines (85 tokens): parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java:581 <-> parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java:1163

✅ jscpd (language-agnostic)

PR Base Change
Clones 96 96 ➖ 0
Duplicated lines 1361 1361 ➖ 0
Duplication 0.80% 0.81% 🙂 -0.01%
Rule Limit Status
Max duplication 2% ✅ Pass (0.80%)
Max increase vs base +0.1% ✅ Pass (-0.01%)

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Sep 3, 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/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 32.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProduceLockNotHeldException.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.4
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/EncoderOutputSurvivesDecodeValidationTest.java 30.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/JStreamLiveResultStreamTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtilsTest.java 30.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 30.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 30.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleCollaboratorOwnershipTest.java 30.0

🔺 Increased similarities

File A File B Base (%) PR (%) Change
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 34.7 36.7 +2.0
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 34.9 36.4 +1.5
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 33.4 34.6 +1.2
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 32.6 33.9 +1.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 32.9 33.9 +1.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java 37.5 38.0 +0.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 33.5 33.9 +0.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java 36.0 36.5 +0.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java 40.8 41.2 +0.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/WorkManagerOffsetMapCodecManagerTest.java 30.7 31.2 +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 36.4 36.7 +0.3
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java 35.5 35.8 +0.3
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.5 33.8 +0.3
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java 39.5 39.8 +0.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 31.7 31.9 +0.2
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.1 31.4 +0.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueLincheckTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 39.8 40.0 +0.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 33.5 33.8 +0.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 33.5 33.8 +0.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilter.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/RunTagFilterTest.java 35.0 35.3 +0.2

...and 115 more

Full similarity report
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 38.46
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 34.53
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.51
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 36.62
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/SeenSucceededOrderingProbes.java 55.08 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 38.46
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 37.51
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.08 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 36.62
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 34.53
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.53 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 37.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 31.93
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/ParallelEoSStreamProcessor.java 55.37 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 55.33 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 43.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 41.42
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 33.49
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.01
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 31.65
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 55.33 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 48.18
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 41.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 38.77
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 34.09
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.48
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java 30.33
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.53 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 46.39
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 31.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 55.37 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 52.17 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 48.18
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 40.43
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 34.34
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 33.81
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.17 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 41.42
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 38.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 38.77
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 46.26
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 39.79
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 35.14
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.14
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 46.26
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContext.java 30.14
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/test/java/bz/stub/parallelconsumer/internal/SubmitWorkToPoolShutdownRaceTest.java 40.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 39.09
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 35.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 33.75
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 32.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java 31.93
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java 31.36
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 35.46
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerPauseCacheTest.java 30.07
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 31.36
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/DynamicLoadFactor.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LoadFactorCeilingReportingTest.java 30.3
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 40.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 39.09
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 35.21
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java 30.36
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 49.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 47.44
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 46.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 37.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCInternalRuntimeException.java 36.77
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 36.26
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.94
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 36.77
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 33.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 31.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleCollaboratorOwnershipTest.java 30.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProduceLockNotHeldException.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.37
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/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 33.94
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.75
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.7
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.78
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 33.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 30.33
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 41.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 30.79
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.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 30.94
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 30.64
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 36.99
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/UnknownOffsetMetadataMagicException.java 31.81
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 36.69
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 36.26
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 47.44
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 44.14
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 33.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 32.54
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 49.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 44.14
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.93
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 38.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/WorkManagerOffsetMapCodecManagerTest.java 31.16
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 36.69
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.9 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 33.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 31.45
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.9 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 32.54
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.64
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 49.98
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetEncoding.java 38.01
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataException.java 31.81
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 49.98
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataException.java 36.99
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/state/WorkManager.java 32.08
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 31.98
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 42.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 31.98
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 44.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 39.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.79
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 34.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 32.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 30.16
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 44.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 40.27
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 38.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.65
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerRevokeSweepNpeTest.java 31.28
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.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 36.56
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 32.25
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 42.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 36.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 36.79
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 36.65
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 32.08
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 34.5
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.22 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 45.45
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 32.87
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 32.87
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.4 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 45.45
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 30.14
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 33.88
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.95
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalPartialResultSetIT.java 36.41
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 34.62
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalVisibilityIT.java 32.5
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 31.03
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.95
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 36.42
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 32.88
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/internal/ProducerManagerTest.java 36.69
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 33.85
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 32.88
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 31.03
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 36.41
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 32.5
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.22 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 53.4 ⚠️
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 36.37
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 43.13
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java 40.32
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 37.15
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 33.56
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 32.64
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 43.95
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 43.13
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.63
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 51.77 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 43.95
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 37.15
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 33.56
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.75
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.58
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.75
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.58
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 32.64
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 51.77 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 40.32
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.63
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 33.56
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 33.56
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.01 ⚠️
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.01 ⚠️
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 31.33
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 31.33
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java 30.86
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.56
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.56
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/InstanceStallDetector.java 30.86
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.48
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.66
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 30.34
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.37
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 39.24
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/CommitResponseTimeoutSymptomTest.java 30.56
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.36
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 30.56
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 52.4 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 50.6 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 44.42
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java 30.34
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.87
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/JStreamLiveResultStreamTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtilsTest.java 30.05
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.8
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.8
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 44.44
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 44.44
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.36
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.48
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.28
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.28
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 31.66
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.24
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.37
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 35.26
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 35.26
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.22 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.85 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.98 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.98 ⚠️
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 36.42
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 34.62
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 33.85
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 35.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerPauseCacheTest.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 30.07
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 33.52
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 40.85
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/PartitionStateDirtyFlagFenceTest.java 39.99
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LoadFactorCeilingReportingTest.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/DynamicLoadFactor.java 30.3
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 35.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java 30.79
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleCollaboratorOwnershipTest.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.0
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/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 42.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 39.79
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 32.81
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/ProducerManagerTest.java 35.39
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java 32.81
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/PollContextInternalTest.java 42.96
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 36.69
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 35.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 35.14
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 33.94
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java 33.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.71
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProduceLockNotHeldException.java 30.37
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 40.71
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java 36.48
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 40.43
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.49
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 35.06
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.87
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 73.76 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 44.21
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 36.56
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.78
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.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/JStreamLiveResultStreamTest.java 30.05
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 34.5
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 33.04
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 41.2
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 35.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataTest.java

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

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

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/CorruptOffsetMetadataTest.java 30.22
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/WorkManagerOffsetMapCodecManagerTest.java 30.13
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.88
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.88
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.16
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetCodecTestUtils.java 30.13
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 30.04
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 43.83
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java 36.45
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 43.83
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java 39.78
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 30.05
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 39.78
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateDirtyFlagFenceTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LastCommitTimeFenceTest.java 39.99
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 32.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java 30.05
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.72
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.82 ⚠️
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.82 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java 36.45
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 40.01
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 43.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 40.27
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 33.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 30.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 34.64
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 31.21
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 40.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 32.06
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java 31.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java 30.04
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerRevokeSweepNpeTest.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 31.28
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.72
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMapRaceTest.java 33.52
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/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 39.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 38.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueRequeueWindowTest.java 33.75
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 31.21
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 73.76 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 53.2 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 49.2
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 31.01
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 43.64
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.2 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 44.21
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.25
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.25
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.7
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 39.18
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java 36.58
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java 35.04
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.47 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.73 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 79.17 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 79.17 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.76 ⚠️
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.98 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.25 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 80.9 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 76.37 ⚠️
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.58
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 63.94 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java 35.7
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.66
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 39.18
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.47 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.73 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 79.17 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 79.17 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.76 ⚠️
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.98 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.25 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 80.9 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 76.37 ⚠️
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 63.94 ⚠️
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.47 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.73 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 79.17 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 79.17 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.76 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.76 ⚠️
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.66
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 35.04
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.22
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.37 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.6 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 48.24
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.14
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.48 ⚠️
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.85 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.07 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.7 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 80.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 80.9 ⚠️
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.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 30.36
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.37 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 52.4 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 49.92
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.14
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.48 ⚠️
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.85 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.07 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 85.7 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.37 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 80.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 80.9 ⚠️
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-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 43.38
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 42.09
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 38.17
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 37.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 34.34
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 34.09
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/VertxParallelStreamProcessor.java 43.41
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 42.09
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 41.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 38.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.01
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 40.4
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 35.21
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.41
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 40.4
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 38.17
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.37
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 30.14
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.22 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.07 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.73 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.25 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.25 ⚠️
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 49.92
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 48.24
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 44.42

@github-actions

github-actions Bot commented Sep 3, 2026 •

Copy link
Copy Markdown

⚠️ SpotBugs Report

341 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 6a83639 · run 34085897866 · 2026-09-07 05:19 UTC

@github-actions

github-actions Bot commented Sep 3, 2026 •

Copy link
Copy Markdown

[superseded - a quarantined test changed outcome] 🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature
ProducerManagerTest.aRevokeTimeCommitIncludesTheOffsetOfEveryRecordItAlreadyProduced 🔴 failing (expected) ⚠️ unowned quarantine holding

🔴 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 0b2615e · run 34064106653 · 2026-09-06 22:33 UTC

Superseded by a newer quarantine lane report.

@codecov

codecov Bot commented Sep 3, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.71%. Comparing base (70a88bf) to head (6a83639).
⚠️ Report is 5 commits behind head on master.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##             master     #436      +/-   ##
============================================
+ Coverage     81.70%   82.71%   +1.00%     
- Complexity     1324     1494     +170     
============================================
  Files            84       95      +11     
  Lines          4597     5189     +592     
  Branches        492      508      +16     
============================================
+ Hits           3756     4292     +536     
- Misses          648      706      +58     
+ Partials        193      191       -2     
Flag Coverage Δ
chaos 52.45% <ø> (?)
integration 61.58% <ø> (?)
performance 51.80% <ø> (?)
unit 78.70% <ø> (-3.01%) ⬇️

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 3, 2026 •

Copy link
Copy Markdown

🟢 Throughput — OK

This branch measured about 19% faster than master, on the one test this measures. That is larger than this test's own run-to-run spread of about 17%, so it is worth looking at.

What Value Meaning
Compared with master 1.194 above 1.00 is faster, below is slower
Subject test took 47.1s the test under measurement
Control tests took 33.6s the other tests in this same run
Subject ÷ controls, here 1.400 not a speed - a shape that cancels machine speed
Subject ÷ controls, master 1.671 median of recent master runs
Reported rate 80081 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.465 – 1.796.

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: 29f6a0f, a75400f, 12bf414, ce6f39a, 70a88bf, 27211b9, c5dde06, 92364a1, 867c407, 7a8dd92

Since the previous push: ratio 1.072 -> 1.194, share 1.621 -> 1.4, rate 69814 -> 80081 (+14.7%). One push of difference sits inside this test's measured spread - read it as movement, not as a result.

Updated for 6a83639 · run 34085897866 · 2026-09-07 05:20 UTC

@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

@astubbs
astubbs marked this pull request as ready for review September 7, 2026 01:16
@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

[superseded - a quarantined test changed outcome] 🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature
ProducerManagerTest.aRevokeTimeCommitIncludesTheOffsetOfEveryRecordItAlreadyProduced 🔴 failing (expected) ⚠️ unowned quarantine holding
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.

Since the previous push: RegistrationRaceStaleResidentIT.freshArrivalCollidingWithStaleShardResidentMustStillGetProcessed entered the lane as 🟡🎲 passed (flapper).

Updated for 29d88e9 · run 34072231772 · 2026-09-07 01:18 UTC

Superseded by a newer quarantine lane report.

…ect yet

Asked at merge prep: can the concurrency annotations help here, or expose this
better? Recorded because the intuitive answer is wrong in a way that would cost
something.

A DECLARATION HERE WOULD BE FALSE, AND FALSE IS WORSE THAN ABSENT. RacerD reads
com.facebook.infer.annotation.ThreadConfined and consumes declarations without
checking them, so @ThreadConfined(CONTROL_THREAD) on the state the revoke-path
drain would mutate does not expose this defect - it silences the detector that
might otherwise find it. RetryQueue's own usage already states the rule: an
annotation nobody enforces is a comment that silences a detector.

INDEPENDENT CORROBORATION, WHICH IS THE PART WORTH KEEPING. #433 reached
this same seam from the other direction while putting the infer annotations on the
compile classpath. It evaluated lastCommitTime as a confinement candidate, found
every record of the field claiming two control-thread accessors, grepped the
writers, and found tryCommitOffsetsOnRevoke() writes it from inside
onPartitionsRevoked on the broker poll thread. It made the field volatile instead
and said so in the field's javadoc. One investigation started from the mailbox
drain and one from a field's writers; both landed on the revoke path running
control-thread work on the poll thread, and neither knew about the other.

WHAT THE ANNOTATIONS ARE FOR HERE IS THE FIX. @GuardedBy does not fit - this is
confinement rather than lock discipline, and the core AGENTS.md records that it
silently checks nothing on a ReadWriteLock. The shape that fits is
RetryQueueIterator's: once the thread-ownership decision at this seam is taken,
declare the confinement AND assert it on the owning thread in the same change, so
the decision cannot rot back. Until that decision exists there is nothing truthful
to declare, which is why this note stays open.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
@astubbs

astubbs commented Sep 7, 2026

Copy link
Copy Markdown
Owner Author

@codex review

Steer, because this PR is unusual in what it asks you to check.

It is a diagnosis, not a fix, and it publishes a caveat about the product's headline guarantee. It flips claim C9 NO_PRODUCE_WITHOUT_ITS_OFFSET from PROVED to REFUTED in the transactional claim register, adds a CAUTION to the README saying exactly-once degrades to at-least-once on the revoke path, and rewrites the paragraph in STRATEGY.md that previously said no claim in the register is refuted. The thing most worth your attention is whether the evidence actually carries those public statements - a wrong refutation published in the README is as costly as a missed defect.

Push hardest on the reachability argument, because it inverts the note it came from. The original note guessed the window might be unreachable: the produce read lock is held across the send and its acks, so the mailbox might be empty of produced work whenever a commit can begin. This PR argues the opposite - that the ordering is send, then addToMailbox, then release, with cleanUpContext as the single release point in runUserFunction's finally - so a returned produce lock guarantees the work is already queued, and the lock discipline makes the window open rather than closed. If that inversion is wrong, the whole PR is wrong.

The deliberate non-fix. The one-line fix (drain from onPartitionsRevoked) is rejected because the revoke callback runs on the broker-poll thread while the drain mutates control-thread-confined WorkManager state - the shape that corrupted a counter in #29. Check that reasoning rather than the absence of a fix.

Two things already verified, so treat a contradiction as significant rather than as a fresh finding. The red proof is @Quarantined and deliberately not @ProvesClaim, and TransactionalClaimCoverageTest#everyCoveredClaimMustHaveAProofThisRunCanSelect was run against this head and passes - so a refuted claim with a quarantined proof still satisfies #443's hardened register. And the newest commit argues that a @ThreadConfined declaration at this seam would be false and would silence RacerD, corroborated by #433 independently finding tryCommitOffsetsOnRevoke writing lastCommitTime from the poll thread.

Not claimed, and please do not treat as claimed: field impact, whether #408 narrows or widens the window, and whether this is the mechanism behind #173. onPartitionsLost does not commit so it looks unaffected, but it was not tested.

…, and name what the fix owes

The previous commit answered the annotation question by writing the answer into
this note. Most of that answer was already owned, in terms, by the core main-code
AGENTS.md under "Declare thread confinement with @ThreadConfined, and assert it at
the entry point" - the consume-without-checking property, the unenforced-annotation
warning, the RetryQueueIterator pattern, and even the lastCommitTime premise check
that reaches this same seam. Two copies of a rule drift apart, and that file is the
one delivered to anyone changing core main code, which is where the fixer will be
standing.

So the section is now a pointer that names its owner, plus the two things the owner
cannot carry because they are about this defect rather than about the rule:

- there is nothing truthful to declare here yet, because a confinement claim over
  the state the drain would mutate is precisely the claim this note says is violated;
- the obligation on whoever closes this note - the declaration and its runtime
  assertion go in the SAME change as the thread-ownership fix, for the reason the
  owner gives for @GuardedBy: the decision is obvious while you are making it and
  archaeology a month later.

That last one is the part worth tracking. Closing this note without the pair leaves
the seam free to rot back to exactly its current state, and nothing would fail when
it did - which is the failure mode this whole note exists to describe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

[superseded - a quarantined test changed outcome] 🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances ⚪ not run ⚠️ unowned report missing - check the lane job
ProducerManagerTest.aRevokeTimeCommitIncludesTheOffsetOfEveryRecordItAlreadyProduced 🔴 failing (expected) ⚠️ unowned quarantine holding
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.

Since the previous push: MultiInstanceRebalanceTest.largeNumberOfInstances: 🟡🎲 passed (flapper) → ⚪ not run.

Updated for 5236dda · run 34072664106 · 2026-09-07 01:23 UTC

Superseded by a newer quarantine lane report.

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature
ProducerManagerTest.aRevokeTimeCommitIncludesTheOffsetOfEveryRecordItAlreadyProduced 🔴 failing (expected) ⚠️ unowned quarantine holding
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 6a83639 · run 34085898021 · 2026-09-07 05:16 UTC

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5236ddae25

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/inflight/core-revoke-commit-skips-the-work-mailbox-drain.md Outdated
Comment thread docs/inflight/core-revoke-commit-skips-the-work-mailbox-drain.md Outdated
Comment thread docs/quarantined-tests.md Outdated
Comment thread docs/inflight/core-revoke-commit-skips-the-work-mailbox-drain.md Outdated
astubbs and others added 2 commits September 7, 2026 14:11
The revoke-path experiment's helper asserted `getReadLockCount() == 0` immediately after awaiting
that the worker's completion had reached the mailbox. That await does not establish the lock is
back: the ordering is `addToMailbox` and THEN `cleanUpContext`, which is `runUserFunction`'s
`finally` and the single produce-lock release point, so a worker can sit preempted between the two
while the mailbox already reads 1. The assertion could therefore go red against correct production -
in `aRevokeTimeCommitIncludesThatOffsetWhenTheMailboxIsDrainedFirst`, the control arm, which is NOT
quarantined and so would have flaked a gating lane.

Zero-read-lock is a precondition of the experiment rather than its result, so waiting for it costs
the proof nothing: the same message still fails loudly if the lock is never returned, and the window
under test is unchanged. Verified both arms after the change - the control arm passes, and the
quarantined arm still fails at its own offset assertion (`expected: 2 but was: 1`) rather than at the
precondition, so it still exercises the window it exists to expose.

Raised by Codex review as a P1; the suite has already produced two controls that proved nothing, so
a proof that can pass or fail without exercising its window is the failure mode this branch exists
to expose in others.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
… candidate reading as safe

Three corrections to the records this branch wrote, all from Codex review.

The note carried `<!-- inflight-state: open - ... -->`. Openness follows the PRESENCE of a state
marker, not its words - `bin/lib/inflight-tags.mjs` sets `open: !STATE_MARKER_RE.test(text)` - so a
note declaring itself open parsed as neither open nor deferred and fell into the index's "not shown"
group. A diagnosed data-loss defect was therefore invisible to the session-start open-work index it
exists to reach. `classifyNote` now returns `open: true` for it. Nothing is lost with the marker: the
reason it carried is what the note's own headings already say.

The first candidate disposition presented a post-write-lock mailbox-emptiness check as closing the
window. It does not. Taking the write lock stabilises the mailbox against NEW produced work, not
against the control thread EMPTYING it: `processWorkCompleteMailBox` does `drainTo(results, size)`
into a local queue and only then loops calling `wm.handleFutureResult`, which is what reaches
`PartitionState#onSuccess` and marks the partition dirty. A poll-thread check landing in that gap
sees an empty mailbox and an undirty partition and commits the same incomplete offset map - and
nothing gates that drain during a rebalance, which the note already says one paragraph earlier. The
candidate now names the gap and states what it would actually take: decline unconditionally, or
coordinate with the control-thread drain. The note's own rule was being broken by the note: a fix
that narrows a data-loss window without closing it is worse than none, because it reads as closed.

The reproduction counts are gone. `docs/inflight/AGENTS.md` forbids writing down what a command can
answer, counts included, and says the rule applies hardest when writing up a measurement just taken.
The durable finding is that the arm is deterministic - hand-driven control loop, mocked producer, no
broker, no load, no timing - so the shape and the command to re-run it replace the tally. The
register's own proof notes keep their observed rates deliberately: there the count IS the negative
control's evidence, which is a different rule and a different document.

Separately, `docs/quarantined-tests.md` said "Two entries" while the checklist below it held three -
`RegistrationRaceStaleResidentIT` arrived from master after that paragraph was written, and its kind
was left out of the classification. Rewritten to describe the two kinds and cover all three entries
without a count, so the paragraph cannot go stale the next time the checklist changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
@astubbs
astubbs marked this pull request as draft September 7, 2026 02:17
…oved

Codex found the revoke-path proof does not only falsify C9. Both candidates were
investigated and they come out differently, which is the point of this commit.

C4 OFFSET_AND_RECORDS_ATOMIC goes REFUTED. Leaving it PROVED while C9 reads REFUTED
would make the register assert and deny a single observation, not merely
under-report: the two claims are about the same commit, and
aRevokeTimeCommitIncludesTheOffsetOfEveryRecordItAlreadyProduced shows a transaction
carrying offset 1's output while committing offset 1 rather than 2 - the atomic set
broken, observed rather than inferred. C4's own exemption does not cover it: that
exemption is about marker-delivery ordering WITHIN one commit, whereas here the
offset is never committed by that transaction at all. Its control-loop proof is kept
verbatim rather than deleted, because that half still holds.

C14 RESULTS_EXACTLY_ONCE_UNDER_FAILURE stays PROVED, with a scope note. The route
from an omitted offset to a duplicated result - redelivery, re-produce, duplicate -
is sound, and no duplicate has been observed. C14's own record says its RED and its
GREEN were each seen rather than argued, so refuting it on a reasoning chain would
make it the register's first argued status and break the observed-versus-argued
distinction that is the whole reason the register is worth more than prose. It would
also repeat, inside the register, the mistake this branch exists to correct: a
plausible argument about reachability that turned out backwards once somebody
measured it. The claim now records the route and names what would settle it - a
broker-level rebalance reproduction showing a duplicated result.

THE PUBLISHED WORDING FOLLOWS THE REGISTER. The README caution now names both
refuted guarantees and states that the front-page exactly-once promise is NOT
refuted, so a reader is not left inferring the widest reading. Edited in the
template and regenerated, never in README.adoc.

The STRATEGY paragraph now NAMES the refuted claims instead of counting the
statuses. The count it carried would have been wrong the first time any status
moved, which is this commit; the register is the tally and this paragraph says so.

TransactionalClaimCoverageTest stays green: REFUTED keeps coverage enforced and both
claims already carry proofs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
@astubbs

astubbs commented Sep 7, 2026

Copy link
Copy Markdown
Owner Author

@claude review this

@claude

claude Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 2m 12s —— View job


Review

  • Gather context (PR body, comments, review threads, diff)
  • Read the changed files in full
  • Verify the core reachability argument against the actual code
  • Review the test additions (ProducerManagerTest) for soundness
  • Review the register/docs changes (TransactionalClaim.java, STRATEGY.md, README, quarantine registry, inflight note)
  • Check whether prior Codex review threads were adequately addressed
  • Post final review

The central technical claim checks out against the code, not just the PR's own argument for it. I traced it independently rather than trusting the narrative:

  • runUserFunction's finally calls cleanUpContext (AbstractParallelEoSStreamProcessor.java:2181), which is strictly after addToMailBoxOnUserFunctionSuccess runs inside the try (runUserFunctionInternal, line 2242). So the ordering really is send → mailbox → lock release, not the reverse — the inversion of the earlier note's guess is correct.
  • PartitionState#onSuccess is reachable from exactly one call site in main: WorkManager#handleFutureResult, called only from processWorkCompleteMailBox (line 1962). Grep confirms no other caller exists.
  • tryCommitOffsetsOnRevoke (line 668) calls committer.retrieveOffsetsAndCommit() directly — it never calls processWorkCompleteMailBox. The control loop, by contrast, drains at line 1378 before committing at line 1383. This is the asymmetry the whole PR rests on, and it's real.

So the diagnosis is sound, not just plausible-sounding prose.

All six Codex findings from the last review round appear genuinely fixed, not just claimed fixed in a reply — I checked the current file contents rather than trusting the response comments:

  • The produce-lock-await race in the shared test helper is now an await(...) on getReadLockCount() == 0 rather than a sample, with a comment explaining exactly why sampling would flake the control arm (ProducerManagerTest.java:1187-1200).
  • The open - ... state marker is gone from the inflight note, so it correctly surfaces as open work.
  • The "decline after taking the write lock" candidate disposition now explicitly names the residual race (write lock stabilizes against new produce, not against the control thread's own drain draining concurrently) and says the candidate is only safe if it declines unconditionally or coordinates with the drain.
  • Both 5/5 run-count citations in the inflight note are gone, replaced by "deterministic by construction" reasoning plus a reproduce command; the count that remains in TransactionalClaim.java/STRATEGY.md was deliberately kept as the register's own required observed-control evidence, which is a different rule than the inflight-note one — a defensible and explained distinction, not an inconsistency.
  • The quarantine registry now names all three current entries by kind instead of asserting a stale count of two.
  • C4 OFFSET_AND_RECORDS_ATOMIC was correctly flipped to REFUTED alongside C9, with an explicit operator ruling explaining why C14 RESULTS_EXACTLY_ONCE_UNDER_FAILURE was deliberately not flipped (observed-vs-argued distinction) — this is the right split. Leaving C4 PROVED next to a REFUTED C9 would have had the register assert and deny the same observation.

One thing worth double-checking before merge, not a defect: the new quarantined test's @Quarantined reason and the TransactionalClaim entry both cite astubbs#29 for the cross-thread corruption precedent — worth confirming that resolves in the fork's own issue tracker (per docs/issue-references.md) rather than needing the astubbs/parallel-consumer#29 fully-qualified form, since this is prose rather than something posted raw to GitHub, so the short form is fine here.

Everything else is exactly what the PR claims to be: a diagnosis with no fix, and the non-fix is justified by a real, cited precedent (#29's cross-thread counter corruption) rather than hand-waved. The "not established" section is honest about scope (no broker-level reproduction, no claim about #173's root cause). I found nothing to add beyond what the very thorough Codex pass and the PR author's own responses already surfaced and resolved.

LGTM — consistent with the human reviewer's assessment. No blocking issues found.
· branch debug/revoke-commit-mailbox-drain

…ion that decides it

Checked against #408 before deciding where the fix belongs, and the note's
guess about that PR was wrong in a way that matters. #408 declines the revoke
commit only when the transaction lock is CONTENDED; its own amended
RebalanceEoSDeadlockTest accepts "committed inline if the dwell had already ended"
as a resolved outcome. That uncontended inline commit is exactly this defect's path,
so #408 neither narrows nor widens the reachable case - it leaves it alone.
What it does establish is the machinery a fix reuses: a decline branch documented
safe, and a test contract that already counts declining as success.

THE POSITION. Take the first candidate unconditionally, in transactional mode only.
A mailbox-emptiness test does not close the window wherever it sits; unconditional
has no gap to land in, and it adds no cross-thread mutation, so the #29 hazard
is sidestepped rather than handled. Consumer-commit mode is untouched: it produces
nothing inside a transaction, and an undrained success there is just a redelivery,
which is that lane's published contract.

WHERE. Its own pull request from master, not on #408 - that PR's subject is
the wait, and it is stacked two deep. The two will collide on
tryCommitOffsetsOnRevoke and that is resolved at merge, not dodged.

THE QUESTION THAT DECIDES CORRECTNESS IS NOT YET ESTABLISHED, and the note now says
so in terms rather than asserting the answer. On decline, what becomes of the open
transaction's already-produced output? Aborted, and exactly-once is preserved - the
decline is correct, not a compromise. Committed later by the control thread without
the revoked partition's offset, and it is the same defect through a different door.
#408's record is silent on the produced output, so the design's own account
does not settle it. It has to be run. The un-quarantined proof plus a broker-level
no-duplicate check is the instrument, and it already exists.

Also recorded: the cost to measure first (how often a revoke lands with undrained
produced work - the entire price of going unconditional), that the fix makes the
confinement declaration truthful and owes it in the same change, and the acceptance
shape: the proof leaves quarantine, C9 and C4 return to PROVED, the README caution
comes out.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
@astubbs
astubbs marked this pull request as ready for review September 7, 2026 04:23
astubbs and others added 2 commits September 7, 2026 16:24
The drain note named #408's note; #408's note did not name the drain
defect. AGENTS.md's rule for a superseding or adjacent record is to link both
directions, because a reader arrives from whichever side they know about and a
one-way link strands the other half.

The two defects share one method, tryCommitOffsetsOnRevoke, and are independent:
the wait note bounds the CONTENDED case, the drain note is a correctness hole in
the UNCONTENDED commit. Their fixes will meet on that method, and each note now
says so and names the other, so whoever lands second knows what to resolve.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
… recorded deadlock

The solutions write-up for the confluentinc#857 AB-BA deadlock was not cited by
the note that records this defect's fix candidates, and it binds them. It has the
poll thread parked in onPartitionsRevoked against the control thread holding the
same monitor inside a blocking commit - this exact seam. It is reachable only in
PERIODIC_CONSUMER_SYNC, so it is not this defect; it is a constraint on the fix.

Two of the three candidates put the poll thread in precisely that position: the
second in its naive form, and the "coordinate with the control-thread drain"
variant of the first. Recorded beside them so nobody rebuilds the deadlock while
fixing the drain. It is a second, independent argument for the unconditional
decline, which waits on nothing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MWLkoGdvM2CHQCsYpgUMAR
@astubbs
astubbs merged commit 60138dc into master Sep 7, 2026
29 of 30 checks passed
@astubbs
astubbs deleted the debug/revoke-commit-mailbox-drain branch September 7, 2026 06:40
astubbs added a commit that referenced this pull request Sep 7, 2026
…encing-brainstorm

Fifteen commits on top of the sixteen the previous merge took, three conflicts:

- PartitionState: master's javadoc on onSuccess(long) - the three closed shapes of its assert - with
  this branch's cross-reference to the container overload beneath it.
- TransactionalClaim: master's 2026-09-07 scope note ends C14; this branch's C15 follows it. C4 and
  C9 move to REFUTED as master decided (#436); C15 is untouched by that finding.
- The flake ledger: master's rows where both sides have one (the registration-race guard is now
  quarantined on master, #440), plus the three rows only this branch carries.

One inherited instruction is NOT applied here: #450 asks this branch's replay loop to take the
same register-then-publish swap it made in maybeRegisterNewPollBatchAsWork, and records that in the
refactoring backlog. The commit after this one does it, with the pin.

The paragraph in master's revoke-drain note that names this PR's stacking is attested post-merge:
it records where #408 sat when the split was decided.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VrpH51xNDodaajE4P2nhFg
astubbs added a commit that referenced this pull request Sep 7, 2026
…the control thread (#466)

In PERIODIC_TRANSACTIONAL_PRODUCER mode the revocation-time commit ran inline on the broker-poll
thread and never drained the controller's work mailbox, so it could publish a transaction whose
committed offsets omitted records that transaction contained: output committed, input offset not,
and the partition's next owner reprocessed the input and produced the output again.
#436 diagnosed it, refuted claims C9 and C4 of the transactional claim
register, and quarantined the proof with a passing control arm. This is the fix.

What changed for a user: exactly-once holds across a rebalance in transactional mode.
RebalanceEoSDeadlockTest reads the output topic with a read_committed consumer after the revoked
partitions return and fails on a repeated result; against the old code it found three to five
duplicated results in about a hundred and ten, five runs of five, and reads zero five of five with
the fix. C9 and C4 read PROVED again with their one documented exception, the proof left quarantine
and carries both claims, and the README caution is gone.

The fix. In transactional mode onPartitionsRevoked no longer commits on the poll thread. It posts
a request, wakes the control loop with a mailbox message (never an interrupt, which a periodic
commit's timed lock wait would read as a shutdown), and waits, bounded by
commitLockAcquisitionTimeout. The control loop takes the request at the top of a pass and runs its
ordinary sequence - write lock, flush, drain, fence, commit - then completes the request; a pass
that throws fails it; a request the control thread has already taken is waited through to
completion so truncation strictly follows the commit; the close serves whatever is pending at its
own commit and the callback declines at once while the instance is closing. Waiting on the control
thread is safe in this mode and only this mode: the deadlock behind confluentinc#857 is the control
thread blocking on the poll thread, and a transactional commit needs nothing from it. The
consumer-commit modes keep the inline tryLock commit.

The fence. With the drain alone the broker-level check still read two or three duplicates per
run: once the served commit released the write lock, a worker parked on the produce lock resumed
with a record of a partition about to be truncated. PartitionState.fenceForRevocation is set by the
served pass inside the write lock, for the assignment epoch the request was posted with, so a late
pass cannot fence a re-assignment; the produce wrapper checks it right after the produce lock in
both transactional modes and refuses with PCRetriableException.

Rejected before writing code, by experiment: the position recorded at #436's merge prep was to
decline the commit unconditionally. Two arms in ProducerManagerTest showed that a revoke which
commits nothing leaves the output in the open transaction for the next commit to publish without
its offset - the same defect through a different door. Declining is the deadline fallback, logged
at WARN with that cost named, never the fix.

Also: processWorkCompleteMailBox declares @ThreadConfined to the control thread with a runtime
assertion; the confluentinc#548 sleep spin and its ArchUnit exemption are gone; the revoke-drain
inflight note is retired into docs/solutions/logic-errors/the-revoke-path-commit-did-not-drain-the-mailbox-2026-09-07.md;
STRATEGY.md's account of the register is brought current. Collides with
#408 on tryCommitOffsetsOnRevoke; whichever lands second resolves it.

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