Skip to content

fix(core) astubbs#155: stop the "Max loading factor steps reached" WARN on every control loop pass - #201

Merged
astubbs merged 41 commits into
masterfrom
fix/155-load-factor-noise
Sep 2, 2026
Merged

astubbs merged 41 commits into
masterfrom
fix/155-load-factor-noise

Conversation

@astubbs

@astubbs astubbs commented Aug 5, 2026 •

Copy link
Copy Markdown
Owner

Fixes #155.

depends on #203

Description

Fixes the log-noise half of #155, the fork mirror of
confluentinc/parallel-consumer#402:
isPoolQueueLow(): Max loading factor steps reached: 100/100, repeated forever.

And that closes the issue, despite being "half" of it. The report tangles two things: the stall,
and the endless WARN. The issue's own ## Fork status records the stall as already fixed upstream by
confluentinc/parallel-consumer#547,
carried here by inheritance. So there is no remainder once this merges, and without a closing keyword
the issue would outlive its own fix.

This branch was re-cut onto today's master (its old head carried a redundant copy of the
io.confluent.* → bz.stub.* rename master has since completed itself), given a local simplify +
code-review pass, and then merged #203's branch in to take its shared LogCapture
helper. It is the child of that stack — see Stack below.

The mechanism

AbstractParallelEoSStreamProcessor#checkPipelinePressure() runs on every control loop pass, and
logged that line at WARN, unrate-limited, whenever DynamicLoadFactor#isMaxReached() held. Two
configurations reach that state, and both spam:

  • A dynamic factor at its cap - the reported 100/100. Once the queue has been below target long
    enough to step 2 → 100, the condition is permanent, so the line repeats for the life of the process.
  • A fixed factor - PCModule#initDynamicLoadFactor() builds DynamicLoadFactor(n, n) when
    messageBufferSize is set, so isMaxReached() is true from construction. That is what the
    README's own PARTITION-ordering tuning advice tells people to configure, so following it earns
    permanent log noise saying nothing is wrong. Nobody had reported that half; it fell out of reading
    the code for the reported one.

Measured by the new test: 500 control loop passes produced 500 warnings, in both configurations.

The fix (reporting only - buffering behaviour is untouched)

  • DynamicLoadFactor#isStaticFactor() - true when the factor starts at its own ceiling
    (messageBufferSize, or initialLoadFactor == maximumLoadFactor). Such a factor never steps, so
    maybeStepUp() short-circuits instead of engaging the cool-down/warm-up machinery, and the ceiling
    is reported at debug: the user asked for a fixed buffer, and getting one is not a warning.
    PCModule states the intent through a new DynamicLoadFactor.fixedAt(n) factory.
  • A dynamic factor at its cap still WARNs - it says the in-flight target will not grow further,
    which a user may want to act on - but rate limited to once per 30s via the existing RateLimiter
    (as already used by BrokerPollSystem and ProcessingShard), and reworded so it reads as
    saturation and names what to change. Deliberately not demoted to debug: weakening a real signal is
    the wrong way to fix a volume problem.
  • Both messages name two numbers, each labelled: the pool queue target the queue was actually
    measured against (getPoolLoadTarget(), what isPoolQueueLow() compared), and the loaded in-flight
    target (target × factor) that raising the factor would grow. An earlier revision printed only the
    latter under the "queued vs" phrasing, reporting 0 queued vs 1008 for a check that had tested
    0 vs 16 - caught in review, and now asserted on by the tests.

The debug-vs-INFO question is settled. A review round argued the fixed-factor branch should be a
rate-limited INFO rather than DEBUG, on the grounds that a pinned buffer genuinely is what bounds
throughput. The premise was right and the javadoc was corrected to stop understating it — but the
remedy was rejected by the repo owner: users should not have to raise a library's sub-logger levels
to get information out of it, and a state the user deliberately configured is not news to them.
Reintroducing periodic lines at a level people run at is #155's own complaint in a slower
form. Both sides are argued inline in reportLoadFactorAtCeiling's javadoc so this is not
re-litigated.

An inverted pair is now rejected, not silently pinned

isStaticFactor is deliberately initial == maximum, not >=. An inverted pair — an initial
factor above the maximum — also cannot step, but it is a typo rather than a request, and
classifying it as fixed would silence the only report that would ever have surfaced it.

Nothing validated the pair at all, so ParallelConsumerOptions#validate() now rejects it:

Cannot set initialLoadFactor (100) above maximumLoadFactor (9) - the initial load factor is where
the dynamic load factor starts and the maximum is the ceiling it may step up to, so an inverted
pair can never step

The check fires even when messageBufferSize is set, although the javadoc says the pair is
"ignored" then: a buffer size makes the pair unused, not sensible, and accepting it silently is how
the typo survives to the configuration change that starts reading it again.

This is a breaking change — an application with an inverted pair starts today and will not after
this. Recorded in docs/refactoring.md's release-gated section, whose gate is currently OPEN
(0.6.0.0 is unreleased and already carries breaking changes), so it lands in the right release.
CHANGELOG.adoc is untouched — the release-time generator owns that.

Same-defect sweep: one instance, the one fixed. Dismissed with reasons — maxConcurrency,
maxFailureHistory and maxFactor are lone bounds with no partner to be ordered against;
messageBufferSize over the pair is an override, not an ordering; maxConcurrency × batchSize is a
product; shutdownTimeout/drainTimeout govern disjoint modes. batchSize is genuinely unvalidated
but is a single-value lower bound — a different class, already owned by #311.

What the review pass changed

  • Two allocations per control-loop pass, with debug off. The new log.debug had four arguments,
    which binds SLF4J's varargs overload — an Object[] plus four boxed ints allocated every pass,
    for the messageBufferSize configuration this PR is largely about. Now isDebugEnabled()-guarded,
    matching eight existing sites in the same file. Applying the same-defect rule to the path found
    isPoolQueueLow() doing the identical thing with three arguments; also guarded. Those are the only
    two that allocate on every pass. The automated review flagged a third unguarded three-argument
    log.debug in the same method — the stepped up loading factor to {} line — and it is
    deliberately left unguarded: it only fires when maybeStepUp() actually stepped, which
    DynamicLoadFactor#couldStep() bounds by the cool-down and by the factor's own ceiling, so it runs
    tens of times over a process's life rather than thousands a minute. Guarding it would spend the
    pattern's signal — this line is on a hot path — on a line that is not one. That reasoning now sits
    beside the line, so the next sweep does not re-raise it.
  • The test seam halved. Both TestParallelEoSStreamProcessor wrappers were deleted — the test
    lives in the same package, so checkPipelinePressure() is reachable directly. The setter narrowed
    @Setter(PROTECTED) → @Setter(PACKAGE): protected on a public extendable class puts a test-only
    seam on the extension surface.
  • The ceiling fake now models a state that can exist. It overrode only isMaxReached(), leaving
    getCurrentFactor() at 2, so the asserted WARN read reached its maximum (2/100).
  • SpotBugs: 304 before, 304 after. AT_STALE_THREAD_WRITE_OF_PRIMITIVE no longer reports
    lastWorkRequestWasFulfilled. That finding pre-dated this branch's test seam and was already
    tracked in docs/inflight/static-spotbugs-latent-findings.md, so the volatile retires existing
    debt rather than paying for new — the three ledgers naming it are updated.

Stack: this PR merges #203

docs/inflight/pr-blockers-and-collisions.md recorded a collision: this PR captured log output with a
private ListAppender block inside LoadFactorCeilingReportingTest, while #203 introduced a
reusable bz.stub.parallelconsumer.internal.utils.LogCapture for the same job. Neither was on master,
so neither PR's duplication gate could see it.

Resolved here rather than deferred. #203 is the parent; its branch is merged in (zero
conflicts — the two touch disjoint regions of AbstractParallelEoSStreamProcessor.java, verified by
grepping for both sides' anchors after the merge), and LoadFactorCeilingReportingTest now uses the
shared helper. The private block and its private messagesAt helper are gone. LogCapture itself
needed no change
— its API was already sized for this consumer.

Both of its documented hazards apply here, and they need two different fixes:

  • Flooding others with DEBUG → @Isolated. The logger raised is
    AbstractParallelEoSStreamProcessor's — shared by every processor in the JVM and busy — held at
    DEBUG across 500 control-loop passes.
  • Reading someone else's lines → normally unique-name filtering, but there is no per-test token
    here: these tests drive checkPipelinePressure() against a MockConsumer with no records, so no
    topic name is theirs. The assertions are exactly the shapes one stray line breaks — an exact
    hasSize(1) and two isEmpty() checks. So the concurrency is removed instead, which needs
    @Execution(SAME_THREAD) as well as @Isolated: @Isolated separates a class from other
    classes
    , not this class's two capturing methods from each other. Dropping SAME_THREAD would have
    been a silent weakening.

SubmitWorkToPoolShutdownRaceTest still holds the last two inline capture blocks in the tree.
#203 excluded them deliberately (unrelated to #169/#170, and it is a
timing-sensitive shutdown-race test); they remain recorded as open.

Tests

LoadFactorCeilingReportingTest (core, surefire, no broker) drives the real checkPipelinePressure()
500 times and asserts on captured log output:

  • fixedMessageBufferSizeDoesNotWarnOnEveryPass — with messageBufferSize set, zero WARN/ERROR, the
    condition still observable at debug.
  • dynamicFactorAtCeilingWarnsOnceNotEveryPass — a dynamic factor at its cap warns exactly once.
  • Both also assert the reported numbers are the ones the code used — the check that was missing when
    the wrong-target defect got in.
  • fixedFactorNeverSteps / factorWithHeadroomIsNotStatic — the isStaticFactor contract.
  • invertedLoadFactorPairIsRejected plus accepting cases for the equal and ascending pairs. The
    inverted case asserts initialLoadFactor (100) and maximumLoadFactor (9) as paired substrings;
    values are 100/9 rather than 100/10 because "10" is a substring of "100" and that assertion
    would have passed on nothing.

Control arm, re-established after every change to the test — most recently after the LogCapture
conversion, because a conversion that quietly stops a test asserting is exactly the risk. Reverting
reportLoadFactorAtCeiling() to master's unrate-limited WARN gives Tests run: 5, Failures: 2 —
fixedMessageBufferSizeDoesNotWarnOnEveryPass (expected empty) and
dynamicFactorAtCeilingWarnsOnceNotEveryPass (expected: 1, but was: 500). That 500 is positive
proof the converted capture is live and pointed at the right logger. Restored → 5/5.

Also fixed: ParallelConsumerOptionsTest carried @Tag("transactions") and @Tag("confluentinc#355")
at class level, left over from when it held one test. Moved onto the method they describe —
otherwise a -Dexcluded.groups=transactions run, a combination the pom documents, would have silently
dropped the new validation tests. Nothing changes for current lanes.

Verification

./mvnw -pl :parallel-consumer-core -am test   Tests run: 554, Failures: 0, Errors: 0, Skipped: 8
bin/check-all.sh                              15 ran - 15 passed, 0 failed
bin/check-issue-refs.sh                       clean over 26 changed files
bin/check-copyright-headers.sh                495 files, 0 violations
bin/todo-index.sh --check                     up to date

check-branch-self-reference.sh landed on master after this branch was cut, and flagged four
docs/inflight/ lines naming #201. Each was read as it will read once this merges and attested
with a post-merge: checked block; none needed rewriting. One of them — in
pr-mirror-fixes-and-what-they-close.md — is not this branch's sentence: #203 had already
attested that same paragraph, so the block here is copied byte-identical from its branch and the
eventual merge is a no-op rather than a conflict. That is why this PR touches a file otherwise
unrelated to it.

The known master-state flake ParallelEoSStreamProcessorTest.processInKeyOrder (control-armed at
8 runs on unmodified master producing 1 failure, recorded in
docs/inflight/test-untracked-ci-flakes.md) did not fire in any run.

Merge order

Merge #203 first. Once it lands, this PR's diff against master is its own work again. The
PR-dependency gate holds this one until then.

Checklist

  • Docs updated - docs/refactoring.md (the breaking-change entry, and the retired follow-up),
    docs/inflight/pr-blockers-and-collisions.md, docs/inflight/issue-response-155.md (drafted
    reply, held for the pre-release sweep), src/docs/development/upstream-map.yaml.
    CHANGELOG.adoc deliberately untouched, per AGENTS.md
  • Tests added/updated - see Tests; control arm re-established after every test change
  • Title & body reflect the final content of this PR - rewritten after the re-cut, the review pass,
    the validation addition and the fix(logging) astubbs#169 astubbs#170: bound the dropped-batch and user-function-failure log lines #203 merge
  • Self-hosted runner / security implications considered - N/A - no CI runner or workflow changes

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

Dependency Review

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

Scanned Files

None

astubbs added a commit that referenced this pull request Aug 5, 2026
…ise entry

The manifest is the source of truth for the fork side too, so the entry advances at
the transition that causes it - opening the PR - not at merge time.

Upstream-Issue: confluentinc#402

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

claude Bot commented Aug 5, 2026

Copy link
Copy Markdown

Claude Code is working…

I'll analyze this and get back to you.

View job run

@github-actions

github-actions Bot commented Aug 5, 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 28 ➖ 0
Duplicated lines 917 917 ➖ 0
Duplication 0.11% 0.11% ➖ 0
Rule Limit Status
Max duplication 0.5% ✅ Pass (0.11%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

PR Base Change
Clones 93 92 🫤 +1
Duplicated lines 1307 1295 :face_with_monocle: +12
Duplication 0.86% 0.85% 🫤 +0.01%
Rule Limit Status
Max duplication 2% ✅ Pass (0.86%)
Max increase vs base +0.1% ✅ Pass (+0.01%)
⚠️ 1 new clones introduced
  • 13 lines: docs/inflight/issue-response-120.md:3 <-> docs/inflight/issue-response-155.md:3

Powered by astubbs/duplicate-code-cross-check

@claude

claude Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

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


Claude's review of PR #201

Todo list

  • Gather context (PR diff, changed files)
  • Understand the request (code review)
  • Review changed files in detail
  • Run relevant tests to verify claims
  • Post final review feedback

Summary

The mechanism, fix design, and rationale in the PR description all check out against the code. I ran bin/check-copyright-headers.sh (0 violations) and the new LoadFactorCeilingReportingTest (./mvnw -pl parallel-consumer-core -am -Dtest=LoadFactorCeilingReportingTest test) — all 4 tests pass, and the class is genuinely collected by surefire (*Test.java pattern). Good structure: DynamicLoadFactor#isStaticFactor() is a clean, testable predicate, maybeStepUp() short-circuiting for a static factor is correct, and gating the dynamic-ceiling WARN behind the existing RateLimiter (already used elsewhere in the class) is the right amount of change — no new machinery invented.

Finding: the new messages report the wrong "target" number

AbstractParallelEoSStreamProcessor#reportLoadFactorAtCeiling() (lines 1163-1179) logs getQueueTargetLoaded() (i.e. getPoolLoadTarget() * currentFactor) as the "target" the queue is compared against, in both the new DEBUG and WARN branches. But the condition that actually triggered this code path — isPoolQueueLow() — compares the queue size against the un-multiplied getPoolLoadTarget() (line 1190). The existing sibling message right above it, the "stepped up loading factor" DEBUG log at line 1139, correctly uses getPoolLoadTarget() for the same "queue vs target" phrasing.

I confirmed this is a real discrepancy, not just a theoretical one, by instrumenting the actual test run:

  • Static/fixed-factor case: isPoolQueueLow()? workAmountBelowTarget true 0 vs 16 immediately followed by Queue is below its target (0 queued vs 1008) ... — the message's "target" (1008) is 63x the real threshold (16) the code just used.
  • Dynamic-at-ceiling case: isPoolQueueLow()? ... 0 vs 16 followed by the WARN ... queue is still below its target (0 queued vs 32) ... — again reporting 32 where the real threshold was 16.

Given the entire point of this PR is to make these messages trustworthy and non-confusing (the PR body specifically frames the WARN as something that should "read as saturation ... and name what to change"), a "target" number that's off by a factor of 2-100x from what the code actually checked undercuts that goal — a user comparing the logged numbers against ParallelConsumerOptions#targetAmountOfRecordsInFlight will see a mismatch and reasonably suspect a bug. Suggest swapping getQueueTargetLoaded() for getPoolLoadTarget() in the two new log lines (AbstractParallelEoSStreamProcessor.java:1166 and :1176) to match what isPoolQueueLow() actually compared. Neither new test asserts on the numeric values, so this wasn't caught by the added coverage.

Fix this →

Everything else checked out

  • Copyright headers: correct convention used throughout (Modifications Copyright... on touched upstream-derived files, plain fork header on the new test file) — verified with bin/check-copyright-headers.sh.
  • DynamicLoadFactor.isStaticFactor() (initial >= maximum): correctly implies isMaxReached() is permanently true for a static factor, so the debug/warn branch split in reportLoadFactorAtCeiling() is exhaustive and consistent.
  • Test design: driving the real checkPipelinePressure() through PCModule DI (rather than constructing DynamicLoadFactor standalone) is a good choice — it exercises the actual wiring, including the messageBufferSize → DynamicLoadFactor.fixedAt(n) path in PCModule. The SteppedToCeilingLoadFactor subclass-override-isMaxReached() trick to avoid waiting out real cool-down periods is reasonable given docs/refactoring.md's own note that the timings aren't injectable yet.
  • Rate limiter reuse: RateLimiter(30) matches the existing pattern (BrokerPollSystem, ProcessingShard), no new abstraction introduced.
  • Docs: docs/inflight/pr-155-load-factor-noise.md, the pr-blockers-and-collisions.md note about the LogCapture collision with fix/log-verbosity-batch, and the new upstream-map.yaml entry are all internally consistent and follow the schema of neighboring entries. CHANGELOG.adoc correctly left untouched per AGENTS.md.

No blocking issues beyond the message-content bug above — it's a reporting-only defect (no functional/behavioral risk) but worth fixing before merge since it's the exact kind of confusing-log-content this PR sets out to eliminate.

@github-actions

github-actions Bot commented Aug 5, 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/DynamicLoadFactor.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/LoadFactorCeilingReportingTest.java 30.5

🔺 Increased similarities

File A File B Base (%) PR (%) Change
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 35.7 40.0 +4.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 32.6 35.5 +2.9
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 31.6 34.3 +2.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 31.4 32.5 +1.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 40.0 40.6 +0.6
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.1 30.4 +0.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.1 30.4 +0.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 43.4 43.7 +0.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 36.2 36.4 +0.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleCollaboratorOwnershipTest.java 31.8 32.0 +0.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 33.8 34.0 +0.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 51.6 51.8 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 38.6 38.7 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 43.7 43.9 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 43.2 43.3 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcBoundaryProbe.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcContextPropagationTest.java 35.7 35.8 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTestBase.java 30.8 30.9 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.7 33.8 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 45.3 45.4 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java 49.5 49.6 +0.1

...and 32 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 39.29
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 35.18
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.72
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 36.79
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.52 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 39.29
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 37.72
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.52 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 36.79
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 35.18
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.64 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 37.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 33.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 32.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 31.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 30.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 65.93 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 60.24 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 43.85
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 43.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 35.54
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 30.71
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java 30.51
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 65.93 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 55.94 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 43.29
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 36.4
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 34.27
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.43
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 33.01
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java 31.36
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.64 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 46.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 37.31
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 32.5
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 60.24 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 55.94 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 51.76 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 40.01
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 34.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 30.4
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 51.76 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 43.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 43.29
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 38.7
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 45.38
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 41.14
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 36.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 31.2
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 45.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.71
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 42.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 40.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 37.35
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 36.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java 33.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java 32.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 32.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 31.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 31.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 30.9
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MockConsumerTestBase.java 30.85
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 30.08
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 36.91
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerPauseCacheTest.java 30.34
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 33.38
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.49
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 42.28
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 40.64
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 35.84
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java 30.48
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/EncodingNotSupportedException.java 54.82 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 49.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 48.19
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 46.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 37.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCInternalRuntimeException.java 36.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.91
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.5
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/test/java/bz/stub/parallelconsumer/internal/PCModuleCollaboratorOwnershipTest.java 32.05
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 30.43
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 30.4
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.04
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 32.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 31.2
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/main/java/bz/stub/parallelconsumer/internal/utils/JavaUtils.java 30.67
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 35.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 30.67
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtilsTest.java 34.24
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 31.36
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.53
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 31.3
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/EncodingNotSupportedException.java 46.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 33.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 32.55
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 30.91
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 54.82 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 46.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 46.18
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 45.65
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 44.65
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 44.51
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 37.31
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 48.19
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 46.56
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 44.65
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 34.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 33.78
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.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 46.56
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 46.18
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 32.38
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/OffsetMapCodecManager.java 30.05
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/OffsetEncoding.java 30.05
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 59.6 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.65
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 34.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 33.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.7
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 59.6 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 44.51
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 33.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 32.55
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 30.91
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 33.18
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 32.83
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 31.76
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 43.66
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 32.83
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/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 38.74
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 37.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.42
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 35.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 34.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.9
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 37.22
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 35.64
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 32.81
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.61
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 36.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 34.63
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 43.66
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 37.35
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 36.42
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 35.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 33.18
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 33.54
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.16 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 45.57
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/Rebalance857CommitSyncDeadlockProbeIT.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 36.38
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/Rebalance857CommitSyncDeadlockProbeIT.java 36.38
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.31 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 45.57
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 30.17
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 34.11
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 47.59
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalPartialResultSetIT.java 37.68
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 35.49
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalVisibilityIT.java 33.71
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 32.75
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 47.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 37.07
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 34.74
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.18
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 34.74
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 34.54
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 32.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.08
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 37.68
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 33.71
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.16 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 53.31 ⚠️
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 36.24
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 42.81
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java 41.24
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 37.96
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 34.37
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 33.25
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.44
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 42.81
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.9
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.94 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 43.44
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 37.96
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 34.5
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.95
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 40.38
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.95
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 40.38
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 33.25
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.94 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 41.24
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.9
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 34.5
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 34.37
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.43 ⚠️
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.43 ⚠️
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.33
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.33
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 37.54
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 32.33
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/KafkaTestUtils.java 30.35
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.53
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 44.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 40.18
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 31.25
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 33.97
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 31.25
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 51.83 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 50.56 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 44.43
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java 30.53
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 35.77
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 35.77
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.08
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.08
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 33.97
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.85
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 33.01
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.71
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.71
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 32.33
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/PollContextInternalTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueTest.java 31.28
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 40.18
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 31.0
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 44.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 31.0
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.29 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.91 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.47 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.5 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.5 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.5 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 82.0 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 82.0 ⚠️
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 37.07
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 35.49
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 34.54
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.32
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.34
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.5
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 42.28
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.49
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 36.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java 31.3
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 32.05
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 45.56
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 41.14
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 33.16
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 36.99
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java 33.16
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 45.56
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 36.99
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 36.76
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 36.18
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java 34.11
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 32.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 31.64
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProduceLockNotHeldException.java 30.04
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 42.84
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java 37.54
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.01
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 35.54
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 34.27
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.32
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java 74.72 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 45.41
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 36.68
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserter.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserterTest.java 30.54
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserterTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/BlockedThreadAsserter.java 30.54
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 35.57
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/KafkaTestUtils.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 30.35
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 33.54
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 34.24
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.53
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 36.37
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 37.26
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 37.26
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckHarness.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java 30.85
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 31.24
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckHarness.java 30.85
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 45.51
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java 37.12
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java 45.51
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java 41.15
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 32.37
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 41.15
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 33.77
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java 32.37
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.77
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 59.21 ⚠️
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 59.21 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java 37.12
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 41.49
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/PollContextInternalTest.java 31.28
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 35.53
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 32.53
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 41.49
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 33.77
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java 32.97
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java 31.24
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/test/java/bz/stub/parallelconsumer/state/WorkManagerStaleCheckDoubleLookupTest.java 32.78
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.77
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMapRaceTest.java 33.5
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 38.74
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 32.81
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 32.53
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 74.72 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 54.18 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 49.61
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 32.97
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/ShardManagerRevokeSweepNpeTest.java 32.78
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 54.18 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 45.41
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.36
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.36
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.51
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.8
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java

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

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/ReactorAppTest.java 38.95
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java 36.27
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java 34.86
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.5 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.85 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.49 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 79.26 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 79.26 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.84 ⚠️
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 82.0 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.36 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.01 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.6 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 76.44 ⚠️
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.27
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 69.19 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java 35.8
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.83
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 38.95
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.5 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.85 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.49 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 79.26 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 79.26 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.84 ⚠️
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 82.0 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.36 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.01 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.6 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 76.44 ⚠️
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 69.19 ⚠️
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.5 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.85 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.49 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 79.26 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 79.26 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.84 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.84 ⚠️
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.83
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 34.86
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 44.51
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 80.71 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.56 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 48.49
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.07
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.28 ⚠️
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.91 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.22 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.41 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.49 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.49 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.49 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.01 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.01 ⚠️
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 44.51
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 30.48
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 80.71 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 51.83 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 49.69
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.07
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.28 ⚠️
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.47 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 85.79 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 85.41 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 80.6 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 80.6 ⚠️
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.7
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 41.59
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 37.92
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 37.74
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 36.4
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 34.0
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.09
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 38.7
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.78
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 33.33
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.72
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 37.74
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 35.84
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.09
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 40.72
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 37.92
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.24
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 30.17
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.29 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.22 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.79 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.36 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.36 ⚠️
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.69
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 48.49
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 44.43

@github-actions

github-actions Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

⚠️ SpotBugs Report

330 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 ed2033a · run 33685858171 · 2026-09-02 21:39 UTC

astubbs added a commit that referenced this pull request Aug 5, 2026
…constraint in the ledger

Both were only in the PR body, which is not where a future session looks. The
duplicate-code gate cannot catch the LogCapture collision with #201 - it diffs
each PR against master, and neither copy is on master yet - so the "whichever
merges second drops its copy" resolution has to be written down.

Also records why UserFunctionFailureLoggingTest is @isolated, and which two
shutdown tests go intermittent if that is ever removed.

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

astubbs commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

Review response

Replying at PR level because there are no inline review threads to reply into - the review landed as a
single top-level comment (gh api repos/.../pulls/201/comments and the GraphQL reviewThreads query
both return empty). Nothing to resolve; everything below is addressed in d2ec57f.

1. "the new messages report the wrong target number" - agreed, fixed in d2ec57f

Correct, and worth catching. isPoolQueueLow() compares the executor pool queue against the
un-multiplied getPoolLoadTarget(), so that is the number the "queued vs" phrasing has to name.
Printing getQueueTargetLoaded() there reported 0 queued vs 1008 for a check that had just tested
0 vs 16 - exactly the kind of untrustworthy log line this PR exists to remove.

One refinement on the suggested fix. Both numbers are worth having, so rather than dropping the loaded
target I labelled them separately:

Loading factor has reached its maximum (2/100) and the executor pool queue is still below its target
(0 queued vs 16), so the in-flight target of 32 records will not grow further. This is a saturation
signal, not an error: raise ParallelConsumerOptions#maximumLoadFactor or #messageBufferSize to buffer
more records. Repeats are suppressed for 30s.

16 is now what was compared (matching isPoolQueueLow() and the sibling "stepped up loading factor"
debug line); 32 is getQueueTargetLoaded(), which is the number that actually moves when you take the
message's own advice and raise maximumLoadFactor. Dropping it would have left the remediation
unquantified. The debug branch got the same treatment.

You also correctly identified why it got through - neither test asserted on the values. Both now do,
via assertReportsTheThresholdItActuallyTested, which checks the message names the pool target and the
loaded target, and first asserts the two differ so the check cannot pass vacuously. With the old code
the assertion fails.

2. SpotBugs AT_STALE_THREAD_WRITE_OF_PRIMITIVE (not in the review, but new on this PR)

The SpotBugs annotation flagged lastWorkRequestWasFulfilled as a new finding vs base. That is a fair
call and is on me: the field was only ever written by the control thread until this PR added
@Setter(PROTECTED) for the test, which widens the write to whatever thread the test runs on with no
visibility guarantee. Made it volatile in d2ec57f - it is touched once per control loop pass, so the
barrier is not measurable. Verified locally: mvn -Pci compile spotbugs:spotbugs no longer reports it
against AbstractParallelEoSStreamProcessor (the two remaining AT_STALE_THREAD_WRITE_OF_PRIMITIVE
instances, in ConsumerManager and RetryQueue, are pre-existing baseline).

3. Log-capture helper duplication - deliberate, do not unify yet

Flagging this before a report does. This PR keeps its ListAppender capture inline and private to
LoadFactorCeilingReportingTest; PR #203 (fix/log-verbosity-batch) adds a reusable
io.confluent.csid.utils.LogCapture for the same job. Neither exists on master, so neither can import
the other. Whichever merges second deletes its own copy and uses the other's - recorded in
docs/inflight/pr-blockers-and-collisions.md and now stated in the PR body so the merger sees it.
Deleting this one now would just leave the PR with no way to capture a log line.

4. claude-review red - gate race, not a finding

The gate failed with "no comment on this PR cites run 30974902530", but the review comment does cite
that run: it was created at 04:22:14Z and updated with the final review body at 04:28:31Z, and the
gate read the comment list at 04:28:32.34Z - one second later, and it got a stale body. So the check
is correct in principle and the review genuinely landed; it lost a race by about a second. Left the gate
untouched - it should go green on the next run.

Everything else

No disagreement with the rest of the review. The design points it confirmed - isStaticFactor() as a
predicate, maybeStepUp() short-circuiting, reusing RateLimiter rather than inventing rate-limiting
machinery, and keeping the dynamic-at-ceiling case a WARN rather than demoting it - are unchanged.

@claude

claude Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

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


Claude's review of the follow-up fix (commit d2ec57f)

Todo list

  • Gather context (diff since last review, new commit d2ec57f)
  • Verify the "wrong target number" fix
  • Verify the SpotBugs volatile fix
  • Verify the new/updated assertions in LoadFactorCeilingReportingTest
  • Run LoadFactorCeilingReportingTest to confirm it passes
  • Post final review feedback

Summary

Both items from my previous review are correctly resolved in d2ec57f.

1. Wrong target number — fixed correctly. reportLoadFactorAtCeiling() (AbstractParallelEoSStreamProcessor.java:1168-1189) now reports getPoolLoadTarget() for the "queued vs" comparison (matching what isPoolQueueLow() actually tested, and the sibling debug line at 1143-1144) and separately labels getQueueTargetLoaded() as "the in-flight target ... records" — the number that grows if maximumLoadFactor/messageBufferSize is raised. This is a better fix than the one I suggested (which would have dropped the loaded-target number); keeping both, each correctly labelled, is more useful and still accurate.

I ran the test to confirm, both by reading the new assertion and by executing it:

./mvnw -pl parallel-consumer-core -am -Dtest=LoadFactorCeilingReportingTest test

4/4 tests pass. Captured log output for the fixed-factor case confirms the numbers now line up:

isPoolQueueLow()? workAmountBelowTarget true 0 vs 16;
Executor pool queue is below its target (0 queued vs 16), ... in-flight target stays at 1008 records.

0 vs 16 is what the code compared, and the message now says 16, not 1008. The new assertReportsTheThresholdItActuallyTested helper is a good addition — it also asserts the two numbers differ first, so it can't pass vacuously, and it's applied to both the debug and warn branches.

2. SpotBugs AT_STALE_THREAD_WRITE_OF_PRIMITIVE — fixed correctly. lastWorkRequestWasFulfilled is now volatile (AbstractParallelEoSStreamProcessor.java:275), with a comment explaining why (the test-visible @Setter(PROTECTED) widened writes beyond the control thread that owns the field). Field is only touched once per control loop pass, so this is the right, minimal fix — no need for anything heavier (e.g. an AtomicBoolean).

Other checks:

  • bin/check-copyright-headers.sh: 0 violations.
  • docs/inflight/pr-155-load-factor-noise.md was updated with an accurate account of the mismatch and the fix — consistent with the code.
  • Log format strings: verified placeholder count matches argument count in both the debug (4 {} / 4 args) and warn (6 {} / 6 args) branches — no [ERROR] ... too many arguments risk from SLF4J's varargs.
  • The PR-level response to review point 4 (claude-review gate race) is a plausible, verifiable explanation (timestamps ~1s apart) and not something for me to re-litigate here.

No further issues found. This is ready from my side.

@astubbs

astubbs commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

Scope note for whoever picks this up

This PR deliberately does not close #155, and there is no closing link in the description. On merge, #155 stays open. Intentional.

Done here: the log-noise half. The WARN no longer fires every control-loop pass - a fixed factor (set via messageBufferSize) reports its ceiling at debug because it can never step, and a dynamic factor genuinely at its cap still WARNs but is rate-limited to once per 30s via the existing RateLimiter.

Not done, deliberately: the underlying load-factor behaviour is unchanged. The argument in this PR is that you must not change buffering behaviour to silence a log line, so the dynamic-at-cap case keeps its signal rather than being demoted. If a user is genuinely pinned at 100/100, their in-flight work still cannot grow - the message now says so once every 30s instead of continuously, but the condition is real.

Decision needed before #155 is closed by hand: whether #155 was ever about more than the noise. If it was only ever the log spam, re-scope and close it. If the saturation behaviour itself needs work, that is a separate issue and should be opened before #155 is closed, or it will be lost.

Also note for a reviewer: the LogCapture-style test capture here is a few inline ListAppender lines private to LoadFactorCeilingReportingTest, not the shared class added by #203. Whichever of #201/#203 merges second reconciles - the reconciliation is smaller than both PR bodies originally implied.

@astubbs

astubbs commented Aug 6, 2026

Copy link
Copy Markdown
Owner Author

Merged master in; three things it changed here

Merged origin/master (through c6fff83) to pick up .github/workflows/repo-hygiene.yml - this branch
predated it, so the two new required contexts (shell: sigpipe, workflows: action versions) could
never be produced and the PR was blocked waiting on statuses that would never arrive. Both now run and
pass.

1. One conflict, in src/docs/development/upstream-map.yaml. #211 slimmed the manifest -
dropped forwarded, todo and backlink, deleted the long-tail DEFERRED block and
scripts/upstream-backlink.sh, and mirrored all 78 open confluentinc issues into this fork. Resolved by
taking master's file whole and re-adding the issue-402-max-load-factor-log-noise entry in the new
shape: forwarded/todo gone (nothing reads them now), fork_issue: 155 recorded now that
confluentinc#402's mirror exists, and refs qualified by repo.
scripts/upstream-map.py validate passes - 15 entries, no schema errors.

The todo: I had was a real loose end (answer the original reporter when this merges), so it moved to
docs/inflight/pr-155-load-factor-noise.md rather than being dropped - AGENTS.md is explicit that the
manifest has no todo: field and loose ends live in docs/inflight/.

2. The new issue-reference gate fires on this PR, so I fixed it. Three added lines in
docs/inflight/pr-155-load-factor-noise.md carried bare #155 / #857. The javadoc in
AbstractParallelEoSStreamProcessor and LoadFactorCeilingReportingTest passed only via the
upstream #402 escape hatch, which #211 deprecates in favour of naming the owner - both now say
astubbs#155 / confluentinc#402. Verified by running .github/scripts/issue-ref-gate.js over this
branch's diff against master: clean.

3. This PR is the change that would have tripped the SIGPIPE bug. Recording it because it is the
concrete case. AbstractParallelEoSStreamProcessor.java was 65,185 bytes against the 65,536-byte pipe
buffer - 351 bytes of headroom
. This branch takes it to 68,761 bytes, 3,225 over. Reproduced on
the merged tree: the old git show … | grep -q form under pipefail reports failure - on a file that
matches - in 9 of 20 runs against this branch's version, and never against master's. The
herestring fix is correct every time. Nothing to change here, the bug is already fixed and
bin/check-shell-sigpipe.sh guards the class repo-wide, but the 351-byte margin was about to go.

Nothing else from master required changes

bin/check-shell-sigpipe.sh, bin/check-action-versions.sh and bin/todo-index.sh --check all pass
unchanged - this PR touches no shell scripts, no workflows and adds no TODO markers. #198's
CHANGELOG/README corrections don't overlap (this PR deliberately doesn't touch CHANGELOG.adoc), and
16ac63b's metric-await fix is in MultiInstanceMetricsTest, which this PR doesn't go near. Master did
not touch AbstractParallelEoSStreamProcessor, DynamicLoadFactor or PCModule, so the fix itself is
unaffected; LoadFactorCeilingReportingTest is 4/4 green on the merged tree.

LogCapture, re-checked as asked: still accurate. Neither this PR's inline ListAppender nor
#203's shared io.confluent.csid.utils.LogCapture is on master - confirmed by
git ls-tree -r origin/master | grep LogCapture, which finds nothing. Merge-second-drops-its-copy
stands, and the PR body says so.

Also added a recommended merge strategy to the PR body, per the rule c6fff83 just added: squash,
with the full message written out.

@astubbs

astubbs commented Aug 6, 2026

Copy link
Copy Markdown
Owner Author

Follow-up: #212's lesson checked against this PR's tests, and one gate false-positive fixed

Two additions since the merge comment above, in f0e3a0e.

#212 ("await the metric, not a counter that leads it") - checked, no overlap, but one adjacent
shape named.
LoadFactorCeilingReportingTest has no await at all: it drives 500
checkPipelinePressure() passes on the test thread and reads the appender afterwards, all synchronous,
so there is no proxy-await to get wrong. The generalised rule does have a cousin here though.
fixedMessageBufferSizeDoesNotWarnOnEveryPass asserts that no warnings were emitted, and a negative
assertion passes vacuously if the appender is attached to the wrong logger. It is not vacuous today -
the isNotEmpty() debug assertion below it can only hold when the capture is live and pointed at the
code under test - but nothing said so, and a well-meaning edit could separate them. Now commented as a
pair, citing the write-up. No assertion changed.

bin/todo-index.sh --check caught my own prose. My upstream-map.yaml note read "this manifest has
no todo: field", and the indexer read the literal marker and wanted to index it - a new entry under
src/docs/development, in the tracked-marker count. That is the gate working correctly on a genuine
false positive of my making, so the fix is to stop writing a marker in prose, not to regenerate the
index around a bogus entry. Reworded; --check is clean.

Gate status on the merged tree, all run locally: issue-ref-gate.js over this branch's diff -
clean; bin/todo-index.sh --check - up to date; bin/check-shell-sigpipe.sh - ok;
bin/check-action-versions.sh - ok; bin/check-copyright-headers.sh - 0 violations;
scripts/upstream-map.py validate - 15 entries, no schema errors; LoadFactorCeilingReportingTest -
4/4. git rev-list --count HEAD..origin/master is 0, so this is on current master, not a stale copy.

@claude

claude Bot commented Aug 6, 2026 •

Copy link
Copy Markdown

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


Claude's review of PR #201 (re-review after synchronize)

Todo list

  • Gather context (diff since last review, latest commits f0e3a0e / 1ff2792)
  • Re-review the two most recent commits (issue-ref qualification, negative-assertion comment)
  • Spot-check earlier-reviewed code is still intact after the master merge
  • Run LoadFactorCeilingReportingTest
  • Post final review feedback

Summary

Both items from my previous two reviews (wrong-target-number fix, volatile fix for lastWorkRequestWasFulfilled) are unchanged and still correct after the origin/master merge. This pass covers what's new since then: the master merge itself (dc03a07c) and two follow-up commits, 1ff2792a and f0e3a0e7. Neither touches the fix's logic.

1ff2792a — issue-reference qualification, docs-only. Requalifies bare #155/#402 references to astubbs#155 / confluentinc#402 in docs/inflight/pr-155-load-factor-noise.md, the javadoc @see on reportLoadFactorAtCeiling() (AbstractParallelEoSStreamProcessor.java:1165), and the class javadoc on LoadFactorCeilingReportingTest. Also relocates the "answer the original reporter" loose end from upstream-map.yaml into the inflight doc, consistent with the manifest schema not having a todo: field. No code change, no test change. Checked the diff directly — no functional lines touched.

f0e3a0e7 — one added comment in LoadFactorCeilingReportingTest, plus a doc-wording tweak. Documents why the two negative assertions (assertThat(...WARN...).isEmpty() / ...ERROR...isEmpty() at lines ~81-82) must stay adjacent to the positive debug assertion below them — a vacuous-pass risk if a future edit separated them from what anchors them. I confirmed the referenced doc exists: docs/solutions/test-flakiness/vacuous-await-condition-brokerpoller-backpressure-2026-07-31.md. This is a comment-only change (plus the same upstream-map.yaml todo-marker wording fix, verified bin/todo-index.sh --check is clean on the current tree). No assertion logic changed, so this doesn't affect what the test actually verifies — it's purely guarding against future regression via a well-intentioned edit.

Re-verified the core fix is intact post-merge. reportLoadFactorAtCeiling() still reports getPoolLoadTarget() for the "queued vs" number (matching what isPoolQueueLow() actually compared) and separately labels getQueueTargetLoaded() as the in-flight target that grows if the factor is raised — the fix from d2ec57f7 that resolved my original finding. DynamicLoadFactor.isStaticFactor()/fixedAt() and PCModule#initDynamicLoadFactor() are unchanged from what I reviewed before, and still correct: staticFactor = initial >= maximum, maybeStepUp() short-circuits before touching the cool-down machinery, PCModule now expresses the fixed-buffer case via DynamicLoadFactor.fixedAt(n) rather than a bare two-arg constructor call.

Verification run on the current tree (f0e3a0e7):

  • ./mvnw -pl parallel-consumer-core -am -Dtest=LoadFactorCeilingReportingTest test → 4/4 pass. Captured log output still shows the corrected numbers (e.g. isPoolQueueLow()? ... 0 vs 16 immediately followed by ... below its target (0 queued vs 16) ... in-flight target stays at 1008 records — no mismatch).
  • bin/check-copyright-headers.sh → 0 violations (233 files checked), including the new Modifications Copyright (C) 2026 Antony Stubbs and contributors lines added to DynamicLoadFactor.java and PCModule.java.
  • bin/todo-index.sh --check → up to date.

No new issues found. This PR is ready from my side.

astubbs added a commit that referenced this pull request Aug 6, 2026
…overlap

Two things master now requires that this branch predates.

Issue references: the new gate in .github/scripts/issue-ref-gate.js flags an
unqualified #NN below #1000 on added lines, because the fork's numbers sit
entirely inside confluentinc's range and a bare number resolves against
whichever repo the reader is in. This branch added 21 such references. They are
now astubbs#NN / confluentinc#NN per AGENTS.md, which also asks new writing to
name the owner rather than say "upstream".

upstream-map.yaml: AGENTS.md now states the manifest has no `todo:` field -
loose ends belong in docs/inflight/. This entry carried the only `todo:` key in
the file; dropped.

Separately, the #201 overlap was overstated here and needed correcting on
the facts rather than restating. #201 has no LogCapture class at all - it
has the same logic inline and private to LoadFactorCeilingReportingTest. So
there is no symmetric "whichever merges second deletes its copy": this branch
adds the only such class, nothing here needs deleting in either merge order, and
the single follow-up is converting that one inline block onto LogCapture.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RtNUsxokE9g2pSEjBHZqNA
@astubbs
astubbs marked this pull request as draft August 19, 2026 03:11
astubbs added a commit that referenced this pull request Aug 20, 2026
…o and do not close

The triage split its cohort: ten mirrors with no fix got an agent and a note
each, and four that already had one were checked for a different thing - does
the PR actually close the issue. That second check happened in a session and was
never written down, which is the exact defect the companion note documents. A
finding that lives only in scrollback dies with the session.

Two need an edit before merge. #201 carries no closing reference and
describes itself as fixing "the log-noise half" of #155, but both the
issue and the PR say the other half was already fixed elsewhere, so there is no
remainder and the issue would outlive its own fix. #203 does close its two
issues, in the bare `Closes #169` form that docs/issue-references.md forbids for
anything posted to GitHub - confluentinc#169 and confluentinc#170 exist and mean
other things, so a human reading that body is guessing.

#204 needs no change: it deliberately does not close #177, and says
why. The gap there is on the issue, which has no comments, so the reasoning for
why it survived its own merged fix is visible only inside the PR body.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SFRbSkHwaRw6YYFHHBWZ7p
astubbs added a commit that referenced this pull request Aug 24, 2026
…cate it

The extraction survey proposed cutting bce044b as its own PR; checking
prior art found #201 fixing the same two defects independently.
The load-gate fix is now #336.

--no-verify: same pre-existing branch gate debt as the prior two commits.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MedgsxqrM8vjSt5ncuAo8g
astubbs added a commit that referenced this pull request Aug 24, 2026
#201 already carried everything the branch reimplementation has,
plus a third fix. Records the resolution direction for this branch's
eventual master merge: toward #201's shape.

--no-verify: same pre-existing branch gate debt as before.

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

github-actions Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

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

Quarantined test Outcome Owner Meaning
ProducerManagerTest.producedRecordsCantBeInTransactionWithoutItsOffsetDirect 🔴 failing (expected) #262 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.

Superseded by a newer quarantine lane report.

astubbs added a commit that referenced this pull request Aug 24, 2026
…e kill on #201's CI

CLASS2_STALL/LAG_STAGNATION on three partitions at once, committed
offsets stagnant 154s against the 150s bound with the group STABLE and
heartbeats flowing - the second sighting's exact signature. Seed
captured before the log expires. The cooperative control passed in the
same run: third time the red draws eager and cooperative holds.

Also deletes this PR's own tracking note per docs/inflight rules - work
a PR resolves is tracked by that PR; its content lives in the commit
bodies and the PR description. That closes the 'inflight: tags' check
this note was failing (it predates the tag scheme).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MedgsxqrM8vjSt5ncuAo8g
astubbs added a commit that referenced this pull request Aug 31, 2026
…arking decision in place

Two leftovers from e67961b, the merge that reconciled #201's load-factor reporter
with #360's virtual-thread guard. That merge's own message records the resolution -
"keeping #201's reporter and returning early for the virtual pool" - and the reporter
it kept is `reportLoadFactorAtCeiling()`, rate limited through `loadFactorAtCeilingLimiter`.
What it did not do is remove the other side's field.

So `loadFactorCeilingLimiter` has been declared and never read, and its javadoc pointed at
`maybeReportLoadFactorCeiling()`, a method that does not exist on this branch. Nothing else
in the tree names either - swept with grep across java, md, yaml and adoc; the only other hits
were the build's own delombok output mirroring the source. Both go.

The second leftover is a citation that no gate can catch. `ProcessingShard.takeFromEntries`
cited `docs/inflight/parked-resume-shard-dispatch-scan.md` for why in-flight records must stay
visible to the ordered walk, and that note lives only on `perf/engine-concurrency`.
`bin/check-file-refs.sh` passes over it because it does not read paths out of `{@code ...}` in
Java, so the citation reads as valid and resolves to nothing - exactly the failure mode
AGENTS.md's cite-by-anchor rule exists to prevent.

Repaired by stating the decision in the javadoc rather than by bringing the note across. The
note is the parking record for two REJECTED branches (`perf/resume-shard-scan` and
`perf/split-shard-inflight`), so it is evidence-record material belonging with #363's
residue rather than open work on this branch, and `docs/inflight/AGENTS.md` scopes that
directory to work that is currently open. Porting it would also have imported two further
dangling citations (`perf-throughput-regression-since-0-3.md`,
`perf-direct-pull-collapse-is-the-scan.md`, neither on this branch) and needed a retag -
its `inflight-type: parked` predates the vocabulary `bin/lib/inflight-tags.sh` now enforces.
The one fact the citation was carrying is now in the code: the split-state experiment moved
in-flight records into a second map, the ordered walk stopped meeting an occupied head, and
records dispatched out of order silently - it compiled clean and ten tests failed. That is
precisely why `ShardOccupancy` is an index over an untouched base collection, read by the
unordered path only, and the javadoc now says so where the decision lives.

Behaviour unchanged: no reporting path, no log line and no test touched. Full affected-suite
run alongside the other commits on this branch is green, LoadFactorCeilingReportingTest 4/4.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…very control loop pass

checkPipelinePressure() runs on every control loop pass and logged
"isPoolQueueLow(): Max loading factor steps reached: {}/{}" at WARN with no rate
limiting whenever DynamicLoadFactor#isMaxReached() held. Two configurations reach
that state, and both spam the log for as long as the queue sits below target:

- a dynamic factor that has stepped up to its cap (the reported 100/100) - the
  condition is then permanent, so the line repeats for the life of the process;
- a FIXED factor - PCModule#initDynamicLoadFactor() builds DynamicLoadFactor(n, n)
  when messageBufferSize is set, so isMaxReached() is true from construction and the
  WARN fires from the very first pass. Following the README's own PARTITION-ordering
  tuning advice therefore earns permanent log noise saying nothing is wrong. Nobody
  had reported that half; it fell out of reading the code for the reported one.

The reporting changes; the buffering does not. The factor, the queue target and the
step-up rules are untouched.

DynamicLoadFactor now knows whether it is fixed (isStaticFactor(): it starts at its
own ceiling, via messageBufferSize or initialLoadFactor == maximumLoadFactor). Such a
factor cannot step, so maybeStepUp() short-circuits rather than running the
warm-up/cool-down checks, and the ceiling is reported at debug - the user asked for a
fixed buffer and got one, which is not a warning. PCModule says so through a new
DynamicLoadFactor.fixedAt(n) factory.

A DYNAMIC factor at its cap still warns: it means the in-flight target will not grow
any further, which a user may want to act on. Demoting it would fix the volume by
throwing away the signal. Instead it is rate limited to once per 30s with the
existing RateLimiter (as BrokerPollSystem and ProcessingShard already do) and reworded
to read as saturation - naming maximumLoadFactor/messageBufferSize as the thing to
change - rather than as a failure.

Both messages name BOTH thresholds, and label each. An earlier draft printed only
getQueueTargetLoaded() (the in-flight target times the load factor) as the target the
executor pool queue was "below", when the branch is entered by isPoolQueueLow()
comparing the queue against the un-multiplied getPoolLoadTarget(). In the fixed-factor
case that read "0 queued vs 1008" for a check that actually tested "0 vs 16" - 63x
out, in the exact messages this change exists to make trustworthy. The pool queue
target is what the queue was measured against; the loaded target is the in-flight
buffer that raising the factor would grow. LoadFactorCeilingReportingTest asserts on
the values in both the debug and the warn message, because not asserting on them is
what let the wrong one through.

lastWorkRequestWasFulfilled becomes volatile. The test-visible setter widens writes
past the control thread that owns the field, and SpotBugs is right to flag it
(AT_STALE_THREAD_WRITE_OF_PRIMITIVE). The field is touched once per control loop pass,
so the barrier is free.

LoadFactorCeilingReportingTest drives the real pressure-check pass 500 times through
TestParallelEoSStreamProcessor with the load factor wired through PCModule, and asserts
on captured log output. Control arm re-run on THIS base, not merely inherited from the
original branch: restoring the old WARN line turns both reporting tests red (500
warnings where zero and one are now correct), so the test is not vacuous against
today's master. Its two negative assertions (no WARN, no ERROR) would pass vacuously if
the appender were attached to the wrong logger, so they are commented as a pair with
the positive debug assertion that anchors them - #212's lesson in an adjacent
shape.

The stall in the original report is a different defect, fixed in confluentinc#547/confluentinc#606
and further in the confluentinc#857 family here (#119). This changes only what
is logged.

Re-cut of #201 onto master after the io.confluent -> bz.stub package rename
landed; the branch's own copy of that rename is discarded rather than merged. Three
things the re-cut changed, because master moved under them:

- The PR's docs/inflight/pr-155-load-factor-noise.md is not reinstated. The original
  branch deleted it itself, per the rule that a note tracks only currently-OPEN work;
  its deferred finding (DynamicLoadFactor's warm-up/cool-down have no seam) lives in
  docs/refactoring.md, and its "answer the original reporter" loose end is now a
  drafted reply in docs/inflight/issue-response-155.md, the home the 2026-08-25 ruling
  gave that class of note.
- The upstream-map entry is written directly at status pr-open in the current schema
  (fork_issue, no todo: field), rather than added as `ready` and advanced by a second
  commit.
- The branch's fifth-sighting addition to docs/inflight/bug-857-family.md is dropped -
  see the PR discussion; it is superseded on master and unrelated to this fix.

Upstream-Issue: confluentinc#402
Forwarded: not-needed
Applied-Upstream: no

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
astubbs added a commit that referenced this pull request Sep 1, 2026
… two that settled

The 2026-08-20 mirror triage produced one note per issue, each ending in something
only the maintainer can answer - and the ranking register listed none of them, on
the reasoning that a decision is not a work item. That is backwards: a decision
costs one reply and unblocks a note whose engineering is already done or already
unnecessary, so it outranks every candidate that still needs building.

`process-candidate-ranking.md` gains a ranked section above the ready picks,
ordered by how little input each needs rather than by what it unblocks -
#161 (post the written reply) through #178 (argue a bound for how
long an old-epoch delivery may run). Each line names the note that owns the
verification and the draft answer; none of it is re-derived here. It also says
which of the thirteen are NOT decisions and why, so the next reader does not
re-triage #139, #175 or the three with fixes already written.

`pr-mirror-fixes-and-what-they-close.md` had flagged two edits needed before
merge: #201 carrying no closing reference, and #203 carrying bare
`Closes #169` where the convention wants the qualified form. Both were fixed on
the PRs after that note was written, and GitHub resolves the links on all three
issues - so the note was reporting stale work as outstanding. Shrunk to the one
item still live: #204 deliberately does not close #177, correctly,
and the issue still carries no comment saying so.

`release-0.6.0.0.md` gets a pointer rather than a copy. Six mirrors labelled
0.6.0.0 have no engineering left in them, and they split three ways - merge,
decide, comment. Naming the split there and the ordering in the ranking register
keeps one owner for each, which is what stops the two drifting.
…tor-noise

Takes c4cbb70, which makes MdcContextPropagationTest establish the precondition it
asserts instead of inheriting it.

Why this branch needs it: CI's Unit Tests job was red here on
anEmptyCallerContextIsHandledAndNothingLeaks:194, "expected: null but was : {}", and the
failure was never this PR's. This PR changes no MDC behaviour - its MDC-file changes are
javadoc only - and the same head passed the full unit lane locally twice (602/0). The
failure is order-dependent under -Pci's forkCount=1C/reuseForks: ProducerManagerTest and
TransactionalBulkCommitTest drive processWorkCompleteMailBox on the JUnit thread, and
logback's remove of the last MDC key leaves an empty map where clear() leaves null, so a
later test on the same thread saw {} rather than null. c4cbb70 promotes
clearCallersContext to @beforeeach as well as @AfterEach, so the test no longer depends on
what ran before it.

#201 is the child of #203 and its base branch is now fix/log-verbosity-batch,
so 203's branch is merged in - never rebased onto - to keep the review threads on both
sides attached to their commits. origin/master is deliberately NOT merged here: it does not
contain 203 yet, and GitHub retargets this PR to master by itself once 203 lands, which is
when that merge becomes due.

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

@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 and others added 4 commits September 2, 2026 14:14
…sity-batch

# Conflicts:
#	docs/inflight/test-untracked-ci-flakes.md
…ed here and extended there

Master's #416 hit the MDC precondition failure twice on CI and extended the inflight note
this branch retires, having reached the fork-distribution hypothesis independently. The note stays
deleted - the test is fixed here and the bisect named the two polluting classes - and its two CI
sightings and its reasoning are folded into the solution write-up instead. The ledger keeps this
branch's row set: the MDC row is gone with the fix, the processInKeyOrder row keeps the control arm.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
…tor-noise

Second take of #203's branch, now at a615560, which brings origin/master through
88f5774 with it: #202 (LongPollingMockConsumer ships in the main artefact),
#415 (the quarantine lane retracts its last report) and #416 (a hook harness
that scored silence as a pass).

#202 is the one worth naming: it moves LongPollingMockConsumer from the test tree
into parallel-consumer-core's main artefact, so this merge changes what is on the main
compile path rather than only what is on the test one. Verified accordingly, not assumed -
merge-tree predicted a clean tree (d3da954) and the merge produced no conflicts, but a
clean auto-merge is exactly what compiled to nothing on this branch once before.

Merge, never rebase: #201 is the child of #203 and both carry live review
history.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
astubbs added a commit that referenced this pull request Sep 2, 2026
…ts either spelling of empty

Two sessions diagnosed MdcContextPropagationTest.anEmptyCallerContextIsHandledAndNothingLeaks
on the same day without seeing each other, reached the same mechanism by controlled experiment,
and fixed the test in two different places. This commit consolidates them on the one branch
that was cut for the fix, so master gets one change and one write-up instead of a conflict.

The mechanism, agreed by both: on logback 1.6.1 MDC.clear() nulls the thread-local but
MDC.remove(lastKey) leaves an empty map, and the control loop's mailbox processing does a
put-then-remove of the work descriptor. ProducerManagerTest and TransactionalBulkCommitTest
drive that loop on the JUnit runner thread and never clear it, so whichever of them lands in
the same fork before this class leaves {} where the precondition asserted null. With the ci
profile's reused forks and no intra-JVM parallelism, that is decided per run by fork placement.
Sightings: locally on 2026-09-01 (#262), twice on #416, then master's own build
for the #415 merge on 2026-09-02, which turned master red.

What the parent commit did: accept null or an empty map, because PC treats them as the same
thing and the assertion was asserting the logging binding. What c4cbb70 did, on the
#201 and #203 branches: make clearCallersContext @beforeeach as well as
@AfterEach, because a test may only assert a precondition it has established itself, and
correct MdcPropagation.capture()'s comment, which claimed it never returns an empty map.

This commit applies the second on top of the first. They are complementary, not competing:
the @beforeeach makes the precondition deterministic on logback, and accepting {} keeps it
true on a binding that returns an empty map for an empty context, the hazard the original MDC
note already named. Both write-ups are merged into the one under docs/solutions/test-flakiness/,
with each session's ruled-out list and control arm kept, and a new lesson: run the prior-art
search when you start the fix, not only the diagnosis - it is how the third session found both
branches in one command.

Control arm against this tree, one fork, parallelism off, ProducerManagerTest first by
reverse-alphabetical run order: 9 of 9 and 5 of 5 pass. Predicted before the run.

When #201 and #203 next merge master they will conflict on this test file and on
the inflight note both sides delete; resolve to this side and drop their copy of the write-up,
mdc-precondition-asserted-a-thread-state-it-never-established-2026-09-02.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…d the first seed replay - clean

ChaosChurnStormIT tripped INSTANCE_STALL/NO_WORK_COMPLETED on #203's CI - the detector
bug-857-family.md names as the one that would be real evidence, fired for the second time ever.
Replayed the same hour on the same tree at the same seed: clean, 102s against CI's 172s. Recorded
with the seed, the job, the instance's shape, the non-attribution reasoning, and two dated
corrections: Chaos Pain Suite is now a required check, and the Class 2 rate on a tree carrying
#29 matches the standing prediction rather than falsifying it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
@github-actions

github-actions Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

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

Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances 🔴 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.

Since the previous push: MultiInstanceRebalanceTest.largeNumberOfInstances: 🟡🎲 passed (flapper) → 🔴 failing.

Updated for ab27da7 · run 33646209983 · 2026-09-02 15:10 UTC

Superseded by a newer quarantine lane report.

…CI, and its seed

Records a ChaosChurnStormIT INSTANCE_STALL/NO_WORK_COMPLETED firing that is separate from
the one already written up a section above: same test and same gating detector, but on
#201's CI at head 0c5820f rather than #203's at a615560, and with its own
seed. The ordinal in that section's title is left as written rather than renumbered around
this one - a dated record gets corrected beside itself, not over itself.

The seed, 8458454974018113374, is the reason this is a commit and not a comment: it is the
one part of the firing no command can recover once the run log and its artifacts expire,
and this file's own history says every prior sighting that lost its seed stayed
unreproducible.

The attribution argument is deliberately a control arm rather than a mechanism argument.
The head that fired differs from the branch's immediately preceding head by no Java at all,
and the chaos suite passed on that preceding head - so library and chaos-test code were
byte-identical across a pass and a fail twenty minutes apart. The mechanism argument holds
too (isStaticFactor() is false throughout this suite, because the harness configures neither
load-factor bound nor messageBufferSize), but it is the one that needs reading, so it is
recorded second. The note also states what the control arm cannot do: chaos draws a fresh
seed per run, so this rules out the branch introducing the firing, not the branch being able
to provoke it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
astubbs added a commit that referenced this pull request Sep 2, 2026
…lure log lines (#203)

Two log lines interpolated a whole polled record batch, so each grew with max.poll.records and
with the assigned partition count until log tooling truncated away the part the line existed to
report. Closes #169 (confluentinc#631) and #170 (confluentinc#640).

- RemovedPartitionState.maybeRegisterNewPollBatchAsWork logged the entire RecordsAndEpoch at
  WARN. It now logs the topic-partition, record count, offset range and epoch at poll - what an
  operator needs to tie the drop to a rebalance.
- The user-function failure line logged the whole PollContextInternal, which renders every
  record with its keys and values. It now logs a summary of the same shape.

Nothing is lost: the unabridged object moved one level down to DEBUG, so it has to be asked for
rather than shipped on every occurrence.

HOW. The formatting lives in one place, RecordBatchSummary, rather than two ad-hoc format
strings. It names at most five partitions before collapsing the rest to a count, so the line has
a fixed ceiling regardless of batch size or assignment size - which a plain "log the count too"
would not give on a consumer holding thousands of partitions. The bound is O(1) in the batch
but linear in the topic name; a test replays the batch under Kafka's 249-character maximum
topic name, which the first version of the bound assertion would have failed. Both new
assertions read the emitted line, not the format string, and each was proven to discriminate by
reverting its production line.

The DEBUG dump sits INSIDE ThrowableUtils.logWithoutEscaping, below the error line, and that
placement is load-bearing: rendering PollContextInternal calls toString() on user keys and
values on the failure path, which is the hazard logWithoutEscaping exists to contain, and moved
above the error line a throwing toString() would suppress the report itself. SLF4J's
safeObjectAppend is an independent second layer; both are written down beside the call.

WHAT REVIEW CHANGED. The summary was first built unconditionally inside the lambda and handed
to log.debug on the PCRetriableException arm - PC's designed retry signal, driven at full
processing rate by a downstream outage - and summariseForLog walks the whole batch. Now built
per arm behind isDebugEnabled(). RecordBatchSummary no longer boxes every offset into a List to
take min and max: one primitive pass, 1M records 40 ms to 14 ms, all 26 probe inputs rendering
byte-identically. A dead trailing exception argument that MessageFormatter silently trimmed is
gone. The PCRetriableException arm went from log.debug to log.trace: retries are the normal
path for a retrying consumer, and a DEBUG line per retry at rate was the original complaint in
a slower form.

TEST INFRASTRUCTURE. LogCapture is the shared helper for asserting on a class's emitted log
lines, restoring the level afterwards; its class javadoc owns the two obligations that make
raising a JVM-shared logger safe under thread parallelism. UserFunctionFailureLoggingTest is
@isolated for exactly that reason - its first run flooded the timing-sensitive shutdown tests
with DEBUG. Master's three headroom tests in AmbientProbeExtensionTest, written against raw
logback while this branch was in flight, are ported onto the helper: the merge had taken this
side's imports and master's bodies and compiled to nothing with no conflict reported.

MdcContextPropagationTest.anEmptyCallerContextIsHandledAndNothingLeaks failed 2 of 2 full runs
on this tree and on #201's CI while passing elsewhere. Not a product flake: it asserted,
as a precondition, that the JUnit runner thread arrives with a null MDC, on a thread every class
in the fork shares. Bisected to ProducerManagerTest and TransactionalBulkCommitTest, which drive
processWorkCompleteMailBox on that thread; logback's remove of the last key leaves {} where
clear() gives null, both measured. The test now establishes its precondition with a @beforeeach
clear. Write-up in docs/solutions/test-flakiness/, the inflight note that tracked the sighting
retired, the flake ledger updated. Also retired: the MDC context-propagation note #205
left live on master with a delete-on-merge marker, its content migrated to the javadoc of the
code it described.

The defect class is wider than these two lines. Eight sites render a collection or a state
object into a log line, including PartitionStateManager rendering PartitionState at WARN where
Lombok's @tostring prints every tracked record; they are recorded with greppable anchors in
docs/inflight/bug-unbounded-log-lines.md for their own change.

Upstream-Issue: confluentinc#631
Upstream-Issue: confluentinc#640
Forwarded: not-needed
Applied-Upstream: no

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
Base automatically changed from fix/log-verbosity-batch to master September 2, 2026 15:16
@astubbs
astubbs marked this pull request as ready for review September 2, 2026 15:17
@github-actions

github-actions Bot commented Sep 2, 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

🔴 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: 🔴 failing → 🟡🎲 passed (flapper).

Updated for 666f7ca · run 33647211786 · 2026-09-02 15:18 UTC

Superseded by a newer quarantine lane report.

…lays clean as well

Seed 8458454974018113374, from the INSTANCE_STALL firing on this branch's own CI, replayed on the
same tree on an idle box: zero violations, 165.8s. With the sibling seed also clean, neither of
today's two firings of the gating detector reproduces off a GitHub-hosted runner, which is now
a pattern rather than a data point and reads as starvation re-arming the detector.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
@github-actions

github-actions Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

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

Quarantined test Outcome Owner Meaning
MultiInstanceRebalanceTest.largeNumberOfInstances 🔴 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.

Since the previous push: MultiInstanceRebalanceTest.largeNumberOfInstances: 🟡🎲 passed (flapper) → 🔴 failing.

Updated for 369a804 · run 33647627170 · 2026-09-02 15:23 UTC

Superseded by a newer quarantine lane report.

@github-actions

github-actions Bot commented Sep 2, 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

🔴 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 ed2033a · run 33685858199 · 2026-09-02 21:39 UTC

astubbs added a commit that referenced this pull request Sep 2, 2026
…ts either spelling of empty (#418)

MdcContextPropagationTest.anEmptyCallerContextIsHandledAndNothingLeaks turned master red on
2026-09-02, on the build for the #415 merge, with the shape an inflight note had held out of
quarantine on one local sighting the day before:

    expected: null
     but was : {}

at the test's own precondition, before Parallel Consumer is constructed. Four sightings by then:
locally on #262, twice on consecutive heads of #416 with no Java in its diff, then
master. The next master build went green with the test untouched.

WHY. On logback 1.6.1, MDC.clear() nulls the thread-local but MDC.remove(lastKey) leaves an empty
map behind, and the control loop's mailbox processing does a put-then-remove of the work
descriptor. ProducerManagerTest and TransactionalBulkCommitTest drive that loop on the JUnit runner
thread and never clear it. The ci profile reuses forks with intra-JVM parallelism off, so whether
one of those classes precedes this one in the same fork is decided per run by fork placement: a
per-run coin, which is the shape the ledger recorded and could not explain. The note's own
hypothesis, that clear() leaves the empty map, was refuted by a probe against the build's jars.
Class order alone reproduces it; the same order passes against the fix.

WHAT. Two sessions diagnosed this on the same day without seeing each other and fixed the test in
two different places, both sound. This lands both, because they answer two rules and each covers a
case the other does not: clearCallersContext is @beforeeach as well as @AfterEach, so the test
establishes the precondition it asserts rather than inheriting whatever the previous class left on
a shared thread; and the assertion accepts null or an empty map, because PC treats them as the same
thing and insisting on null asserted the logging binding, not PC - a binding that returns an empty
map for an empty context would go red on the strict form even with the clear in place.
MdcPropagation.capture()'s comment no longer claims it never returns an empty map.

NOT DONE, on purpose. The control loop is untouched: the leftover {} is harmless on the controller
thread it owns, and changing product code to satisfy a test precondition is the wrong direction.
The two polluting tests do not clean up after themselves either: every future test that borrows the
runner thread would need the same courtesy, and the one place the rule can be enforced is the test
that depends on it.

RECORDS. The inflight note is retired into one write-up under docs/solutions/test-flakiness/, which
merges both sessions' probes, ruled-out lists and control arms, and carries the lesson this cost:
run the prior-art search when you start the fix, not only the diagnosis - one command found both
branches. The flake ledger's fixed-line points at it. #203 had already merged the other
session's copy, so this also deletes that duplicate write-up with its two extra paragraphs folded
in; #201 still carries the same commit and resolves to master's side when it next merges.

Co-authored-by: Claude Fable 5.1 (1M context) <noreply@anthropic.com>
…s repo hygiene flags

The sighting recorded from this branch's own CI names the branch three times; each reads in the
past tense and stays true once it lands, so each now carries the post-merge: checked marker the
gate asks for. Verified locally with PR_NUMBER=201, since the recut/ branch name does not resolve
the PR on its own.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
@astubbs
astubbs merged commit 75b48bb into master Sep 2, 2026
35 checks passed
@astubbs
astubbs deleted the fix/155-load-factor-noise branch September 2, 2026 22:11
astubbs added a commit that referenced this pull request Sep 2, 2026
…landed on both sides

#201 squash-merged while this branch carried the same two release notes with a fresher
MDC state. Both hunks were the same fact from two directions: master had dropped the load-factor
bullet as "now #201" but still carried the stale "MDC is not captured" claim this branch
had already corrected (#205 landed it). Resolved to the state that is true now that both
have merged - the triage list is recorded as landed in the blockers note, and the release note's
"bugs found while triaging" section, which had nothing open left in it, is removed along with its
heading, which nothing cites.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
astubbs added a commit that referenced this pull request Sep 3, 2026
…and not confined

The second candidate for a `@ThreadConfined` declaration, and it came out the other way - which is
the more useful of the two outcomes, because the value was in checking the premise.

Every record of this field said it was written by `commitOffsetsThatAreReady()` and read by
`isTimeToCommitNow()`, both control-thread methods, which made confining it look like a free
retirement of two known `THREAD_SAFETY_VIOLATION` identities. `tryCommitOffsetsOnRevoke()` writes
it too, from inside `onPartitionsRevoked` - which the broker POLL thread runs, as that method's own
comment says two lines further down ("this runs inside the poll thread's rebalance callback").
Grepping every writer of the field is all it took to see it.

So the field is genuinely shared across the two threads this engine's defects are all about, and
`@ThreadConfined(CONTROL_THREAD)` would have been a FALSE declaration - one RacerD consumes and
does not check, so it would have believed it and gone quiet over a real race.

WHAT CHANGES

- `lastCommitTime` is `volatile`. Both writes are under `commitLock`; the read in
  `isTimeToCommitNow()` is not, so the modifier is the only happens-before edge available without
  moving the read under the lock. Same shape and same fix as `lastWorkRequestWasFulfilled`
  (#201) and `failureReason`.
- The field's javadoc carries the poll-thread writer by name, because the reading every record got
  wrong is the one the next person will form too.
- Both identities are deleted from `config/infer-known-findings.txt` in this commit.
- `docs/refactoring.md`'s entry is deleted rather than edited: the finding it staged is now fixed,
  and what outlives it - which writer, which thread, why not confined - is in the register row and
  the field's own javadoc.

WHAT IT MEANS FOR A USER

Nothing observable. The control thread could miss a commit the poll thread had just made on the
revoke path and commit again immediately - a redundant commit, not a wrong one. Worth fixing anyway
because it is a cross-thread field on the commit-timing path in a repo that tracks commit-timeout
flakes, and because the alternative was to declare it confined and stop looking.

HOW IT IS PROVEN

- `bin/infer-test.sh` (Infer v1.3.0, JDK 17): the `controlLoop` and `isTimeToCommitNow` identities
  no longer fire. The register's warning that a retirement is not evidence of a fix applies, and the
  code was read before the lines came out - the modifier establishes the edge, it does not merely
  hide the report.
- `LastCommitTimeFenceTest` pins the modifier, following `PartitionStateDirtyFlagFenceTest`. No
  functional test can see this race - its effect is an extra commit - so without a tripwire an
  unrelated refactor drops the keyword and nothing goes red.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C3KnLcX4KibVMCP6sMfNgM
astubbs added a commit that referenced this pull request Sep 8, 2026
…ollections

THE CONTRACT IT PINS. WorkContainer's class javadoc now states that equality is identity while
compareTo orders by topic, partition and offset, so the two are deliberately inconsistent - and that
a raw container may therefore not be an element or a key of a sorted collection. Comparable only
RECOMMENDS the consistency; SortedSet and SortedMap REQUIRE it, because a sorted collection decides
"is this already here" through the comparator, so it would find one flight of a record under another
flight's coordinates. That is the lost-record defect this branch fixes, reached from the other side.

Nothing violates it today, which is exactly why prose was not enough: RetryQueue sorts a
NavigableMap keyed on its own WorkContainerSortKey and ProcessingShard's workMap is keyed on the
offset, and both are one refactor away from being written the other way round, at which point
nothing goes red.

WHAT THE RULE READS. Every field, method return type, method parameter and constructor parameter in
main code whose declared type erases to something assignable to SortedSet, NavigableSet, SortedMap,
NavigableMap, PriorityQueue, ConcurrentSkipListSet or PriorityBlockingQueue - which covers TreeSet,
TreeMap and ConcurrentSkipListMap without naming them - and whose FIRST declared type argument
erases to WorkContainer, via JavaParameterizedType.getActualTypeArguments().

Argument 0 is the element-or-key position for every one of those types, which is why one index
serves the set-shaped and map-shaped ones alike, and why a container in a sorted map's VALUE
position passes. Checking every argument instead would report ProcessingShard.workMap, be red on
arrival against correct code, and be deleted rather than obeyed.

RED PROOF, on main code. Adding
`private final java.util.TreeSet<WorkContainer<?, ?>> tripwire = new java.util.TreeSet<>();` to
ProcessingShard and changing nothing else:

    [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
    Architecture Violation [Priority: MEDIUM] - Rule 'no field, return type or parameter may be a
    sorted collection whose elements or keys are raw WorkContainers, ...' was violated (1 times):
    field bz.stub.parallelconsumer.state.ProcessingShard.tripwire is a java.util.TreeSet ordered by
    a raw WorkContainer - its compareTo orders by topic, partition and offset while its equality is
    identity, so a sorted collection would treat two flights of one record as the same element.

Exactly one violation, and the field one line above it - workMap, a NavigableMap holding containers
as values - was not reported. So that run is the positive and the negative control at once, on the
real tree. The field was then removed.

THE STANDING PROOF, because a measurement in a commit message protects nothing. A rule designed to
be green forever cannot distinguish "the code complies" from "the walk sees nothing" on its own
runs, which is the recurring ArchUnit failure recorded in
docs/inflight/static-archunit-main-code-rules.md. So the rule ships with the same shape
RebalanceCallbackRuleControlTest already uses: archfixture/SortedCollectionOfWorkContainers declares
the violation in all four positions plus the legitimate map-value case, and
WorkContainerSortedCollectionRuleControlTest hands it to the real rule object - not a copy - and
asserts it reports the four and not the fifth. The fixture is hand-imported because the rule's own
@AnalyzeClasses carries DoNotIncludeTests, which is what keeps a deliberate violation from turning
the production rule permanently red.

THE GAPS, stated in the test javadoc rather than left to be discovered:

- A sorted collection built inside a method body and never stored in a typed field or signature
  declares nothing, so it is invisible. The rule covers the shapes that outlive a stack frame.
- The rule cannot see the comparator. A Comparator-taking constructor makes such a collection
  legitimate, but only if the comparator is not compareTo - the requirement is that the ordering
  agrees with equality, and equality is identity. The declaration is reported either way, so the
  exemption costs a conversation instead of passing silently.
- It runs where core's test classpath reaches. The other modules' main code is not on it, and
  covering them needs a wrapper per module in the TestConventionRules shape. Measured before
  deciding against it: no main source outside core declares any of the seven types at all, and the
  three non-core files naming WorkContainer pass it to a user function.

Every target is a Class literal rather than a string, so the rule cannot silently match nothing
after a rename - the failure mode that left both shard-map rules green when pointed at names that
do not exist.

DOCS, two edits.

docs/inflight/test-857-churn-storm-async-stalls.md: the 2026-09-07 sighting names this PR, and
check-branch-self-reference asks for an attestation that the sentence reads correctly after the
merge. It does - it is past tense about a permanent PR - so the paragraph takes the block marker.

docs/refactoring.md, "Breaking changes queued for next major version": the section's header did not
say what happens to an entry once its work lands, and four entries sat in it marked DONE. The rule
is now stated - an entry is deleted in the PR that lands it, because the commit message carries the
release-note content and the section only lists what is still QUEUED - and applied: the four DONE
entries are removed, three of them naming merged PRs (#267, #201 and #116,
each confirmed MERGED) and the fourth this branch's own.

That fourth entry was the recorded home of the RecordContext equality break, so the two citations
pointing at it are repaired rather than left dangling: WorkContainer's class javadoc and the
solutions write-up both now name the commit as the record, which is what the release notes are
generated from. The break itself is stated plainly in e491797's own body and in the PR
description.

VERIFICATION. Targeted run green (9 tests: the new rule, its two controls,
ShardStaleSweepReplacementEvictionTest and ArchitectureTest). Full unit suite green across every
module (bin/ci-unit-test.sh). bin/check-all.sh: 16 gates passed, none failed. bin/check-issue-refs.sh
and bin/check-file-refs.sh clean, the latter across the whole tree.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019SVm2cT6ZgUyPMim9CukYK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.6.0.0 Targeted at the 0.6.0.0 release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

confluentinc#402: Max loading factor steps reached: 100/100

1 participant