Skip to content

refactor(core) astubbs#159: ship LongPollingMockConsumer in the main artefact - #202

Merged
astubbs merged 5 commits into
masterfrom
refactor/159-longpolling-to-main
Sep 2, 2026
Merged

astubbs merged 5 commits into
masterfrom
refactor/159-longpolling-to-main

Conversation

@astubbs

@astubbs astubbs commented Aug 5, 2026 •

Copy link
Copy Markdown
Owner

Description

Moves LongPollingMockConsumer from parallel-consumer-core/src/test/java to src/main/java, so
downstream projects can use it with a plain dependency on parallel-consumer-core instead of a
<classifier>tests</classifier> one.

Closes #159, the upstream-mirror issue for confluentinc#526.

The AK MockConsumer returns from poll() instantly, so a control loop under test spins instead of
long-polling. LongPollingMockConsumer fixes that, and it is the only realistic way to test a
parallel-consumer integration without a broker - but until now the only way to get it was a test-jar
dependency, which is not transitive, resolves awkwardly
(confluentinc#162) and drags the whole
test surface along.

This branch was re-cut onto today's master, discarding its own copy of the io.confluent.* →
bz.stub.* package rename now that master has completed that rename itself. Two of the arguments
this PR was originally built on did not survive that; both are corrected below rather than quietly
dropped.

The package moved anyway - and the old rationale for keeping it is retired

The class now lives at bz.stub.parallelconsumer.internal.utils.LongPollingMockConsumer. Only the
source root changes in this PR; the package name changed independently, on master, for the whole
fork.

The original version of this PR argued that keeping the fully-qualified name made the downstream
migration "a pom edit with no code change". That argument is dead. The fork-wide rename broke
every downstream import regardless of what this PR does, so FQN stability is no longer something
this change can offer or protect.

What survives is the argument that actually mattered:

  • Nothing internal-only becomes public. The package this class sits in already ships in the main
    artefact - Range, JavaUtils, TimeUtils, LoopingResumingIterator and more are public in the
    main jar today. This move does not promote an internal-only package to published API; that
    happened long ago.

The deferral has inverted, and this is a decision worth taking deliberately. A supported
test-support class does not belong in a utils grab-bag - it wants bz.stub.parallelconsumer.testing,
or its own parallel-consumer-test-support module in the kafka-streams-test-utils mould. That
rehome was previously parked behind the confluentinc#271 package restructure, to avoid migrating the
same users twice. But docs/refactoring.md's breaking-change section now opens with "The gate is
currently OPEN: 0.6.0.0 is that major, it is unreleased"
, and 0.6.0.0 already carries the rename as
a break. So doing the rehome in 0.6.0.0 is one migration, and deferring it past 0.6.0.0 is now
what costs a second one
. That internal in the current package name is itself an argument for
moving it. Left queued rather than taken here, but it is now a live call rather than a settled one.

Correction: the SpotBugs finding was already reported, rename or no rename

The original version of this PR said the NN_NAKED_NOTIFY finding on this class was newly visible
rather than newly introduced, because "SpotBugs analyses main sources" and the class was moving into
them. That was false. Master's root POM now sets includeTests on spotbugs-maven-plugin.
Measured on master before this change, with the class still in src/test:

./mvnw -pl :parallel-consumer-core -am -DskipTests test-compile spotbugs:spotbugs
→ NN_NAKED_NOTIFY | bz/stub/parallelconsumer/internal/utils/LongPollingMockConsumer.java | ['wakeup']

It is already reported today. This move changes the source root, not whether the class is analysed.
The finding remains a false positive and remains deliberately unfixed, so this PR stays a pure
relocation; the diagnosis and the deferred fix are recorded in docs/refactoring.md along with that
reproduce line.

This does NOT eliminate the test-jar dependency - re-verified on today's master

confluentinc#162 and confluentinc#861 are cited on #159 as consequences of the test-jar. This
move is a prerequisite, not a fix, and that is unchanged:

  • KafkaTestUtils, AbstractParallelEoSStreamProcessorTestBase and LongPollingMockConsumerSubject
    are all still under src/test - confirmed on today's master.
  • Eight poms still declare <classifier>tests</classifier> (mutiny, vertx, reactor, and four
    example modules plus example-metrics), and their test sources still reference those classes.
  • The binding constraint is LongPollingMockConsumerSubject: it is Truth-generator glue extending
    com.google.common.truth.Subject, so moving it would promote com.google.truth from test to
    compile for every downstream user - exactly the cost this change was careful not to incur.

The README's "mvn compile fails, use mvn test-compile" note therefore still stands and is left
alone. If someone wants to actually close confluentinc#162, the next question is KafkaTestUtils -
the next-largest reason the classifier exists, and unlike the Truth subject it has no test-scope-only
dependencies.

What it dragged with it: nothing

The class references AbstractParallelEoSStreamProcessor (main), org.apache.kafka.clients.*,
Lombok, SLF4J and pl.tlinkowski.unij. No test-only class came with it. parallel-consumer-core/pom.xml
is untouched - all four dependencies are already compile scope, so no downstream user gains a new one.

The single test-only reference was a javadoc @see KafkaTestUtils#assertCommitLists(...) on two
methods, which would have become a dangling link in the published javadoc (-Xdoclint:none means it
would have shipped broken rather than failed). Rewritten as plain text naming the class. Confirmed by
building the javadoc jar, which now publishes LongPollingMockConsumer.html cleanly.

The #40 collision is gone, not resolved

The in-flight note previously recorded a collision with #40 (dedupe the MockConsumer* tests)
as "resolved itself". #206 merged on 2026-08-14, so there is nothing left to track.
docs/inflight/AGENTS.md says a note tracks only currently-OPEN work and forbids rewriting closed
items into a DONE narrative, so that section was deleted rather than updated.

The note itself was renamed docs/inflight/pr-159-longpolling-to-main.md →
docs/inflight/pr-202-longpolling-to-main.md: the directory's rule is now <area>-<NNN>-<slug>.md
where pr- takes a fork PR number, and 159 is an issue. It also gained the required
inflight-type: task / inflight-impact: coordination tags - that tagging scheme and its gate
(bin/check-inflight-tags.sh) did not exist when this branch was first cut.

Copyright registration, verified load-bearing

The relocation is registered in bin/check-copyright-headers.sh's RENAMED_FROM_UPSTREAM table, with
the new path in bz/stub spelling and the old path keeping io/confluent, as that table's own comment
requires.

Verified with a control arm rather than assumed: PACKAGE_MOVES maps the package but not the source
root, so without this entry the file resolves to a src/main fork-point path upstream never had.
Deleting the line takes the check from 0 → 1 violation, naming this file
(FAIL (fork-original file claims Confluent copyright)). The header itself needed no edit - master's
rename already added the modifications line.

No upstream-map.yaml entry

Dropped as a no-op. docs/upstream.md states the manifest maps upstream PRs; #159 is the
upstream-mirror issue for confluentinc#526, so it already holds that mapping. bin/check-upstream-map.sh
passes with no entry.

Repo hygiene: repo: hygiene went red without this branch changing

Master gained bin/check-branch-self-reference.sh after this branch was first cut, and the re-cut
renamed the note to pr-202-longpolling-to-main.md and retitled its mentions to #202. That
gate's PR-number arm reads whole files, so six #202 mentions became unattested
self-references and the job failed. Two different cases, so two different markers:

Verification

  • ./mvnw -pl :parallel-consumer-core -am test → Tests run: 533, Failures: 0, Errors: 0, Skipped: 8, BUILD SUCCESS
  • parallel-consumer-core-0.6.0.0-SNAPSHOT.jar contains bz/stub/parallelconsumer/internal/utils/LongPollingMockConsumer.class ✔
  • ...-tests.jar contains only LongPollingMockConsumerSubject.class - the Truth subject that stays ✔
  • ...-javadoc.jar now publishes LongPollingMockConsumer.html; javadoc builds clean ✔
  • bin/check-copyright-headers.sh → 489 files, 0 violations
  • bin/check-issue-refs.sh → no unqualified references below #1000 on added lines
  • bin/check-inflight-tags.sh, bin/check-file-refs.sh, bin/check-branch-self-reference.sh,
    bin/check-upstream-map.sh, bin/check-docs-data.sh, bin/todo-index.sh --check → all clean
  • GITHUB_HEAD_REF=refactor/159-longpolling-to-main PR_NUMBER=202 bin/check-all.sh --with-tests
    → 41 ran, 41 passed (was 40 passed / 1 failed on check-branch-self-reference.sh)

Checklist

  • Docs updated - docs/inflight/pr-202-longpolling-to-main.md (new, replacing the pr-159- name),
    docs/refactoring.md (breaking-change queue + the corrected SpotBugs item),
    docs/inflight/branch-package-rename-sweep.md (two post-merge: checked attestations, see
    above), and no upstream-map.yaml change - see above. CHANGELOG.adoc deliberately
    untouched, per AGENTS.md.
  • Tests added/updated - no new tests: the class's behaviour is unchanged and it is already
    exercised by the whole core unit suite through AbstractParallelEoSStreamProcessorTestBase.
    What this change actually needs verifying is that the artefacts come out right, which the jar
    content checks above cover.
  • Title & body reflect the final content of this PR - rewritten after the re-cut; two original
    arguments are explicitly retired above rather than left standing.
  • Self-hosted runner / security implications considered - not N/A: this PR edits a script CI
    executes. bin/check-copyright-headers.sh is run by .github/workflows/copyright.yml. The change
    adds one newpath|oldpath line to the RENAMED_FROM_UPSTREAM registry so the scanner keeps
    treating the relocated file as upstream-derived. No scanner logic, no workflow definition and no
    runner configuration changed; the registry is inert data the check reads, it grants no permission,
    and the job runs on the hosted runner exactly as before.

Refs #159 · confluentinc#526 confluentinc#526

@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

@claude

claude Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

Claude is reviewing this PR

Todo list

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 92 92 ➖ 0
Duplicated lines 1295 1295 ➖ 0
Duplication 0.86% 0.86% ➖ 0
Rule Limit Status
Max duplication 2% ✅ Pass (0.86%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@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:

🔺 Increased similarities

File A File B Base (%) PR (%) Change
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.8 86.9 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 87.2 87.3 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.5 83.5 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.5 83.5 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.5 83.5 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.4 86.5 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 82.0 82.0 +0.0
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 82.0 82.0 +0.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCInternalRuntimeException.java 36.5 36.5 +0.0
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 37.7 37.7 +0.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 33.6 33.6 +0.0
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 54.1 54.1 +0.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 55.6 55.7 +0.0
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcBoundaryProbe.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/MdcContextPropagationTest.java 35.4 35.4 +0.0
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessorTest.java 32.6 32.6 +0.0
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCloseOwnershipTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ThreadConfinedConsumerTest.java 35.3 35.3 +0.0
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 43.1 43.1 +0.0
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.45
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 35.28
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.7
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 36.81
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.58 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 39.45
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 37.7
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.58 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 36.81
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 35.28
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.67 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 37.32
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 33.27
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 32.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 31.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.05
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.74 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 59.94 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 43.35
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 43.33
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.61
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 32.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 30.47
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/truth/LongPollingMockConsumerSubject.java 30.28
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.74 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 55.66 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 42.79
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 36.02
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.16
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 31.38
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.95
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/ThrowableUtils.java 31.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 55.67 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 46.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 37.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.9
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 59.94 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 55.66 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 51.25 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 35.51
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 33.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 51.25 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 43.35
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 42.79
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 38.29
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.07
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 42.03
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 36.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 31.52
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.07
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.47
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.81
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 40.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 37.48
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 37.02
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java 33.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 32.74
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 31.77
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 31.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java 30.9
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.71
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 37.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerPauseCacheTest.java 30.39
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.39
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 43.07
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 40.0
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 36.12
parallel-consumer-reactor/src/main/java/bz/stub/parallelconsumer/reactor/ReactorProcessor.java 30.4
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 55.06 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 49.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 48.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 46.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 37.32
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 31.22
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 31.96
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosis.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosisTest.java 30.0
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProduceLockNotHeldException.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProducerManagerTest.java 30.05
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.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.74
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 31.52
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.51
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.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 30.51
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.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 31.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/metrics/PCMetrics859Test.java 41.54
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 31.33
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 47.02
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 33.6
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 32.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.37
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 31.22
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 55.06 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 47.02
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 46.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 45.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 44.83
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 44.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 37.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.27
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.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 46.66
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 44.83
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 34.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 33.86
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.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 46.66
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 46.3
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 32.39
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.66 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 45.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 34.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 33.6
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.85
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.66 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 44.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 33.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 32.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.05
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.5
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionStateManager.java 33.01
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.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 33.01
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.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 37.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 36.73
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 35.76
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 35.05
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.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkManager.java 35.84
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 32.95
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.46
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 36.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 35.05
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.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 37.48
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java 36.73
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 35.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 33.5
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.51
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.2 ⚠️
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.54
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.54
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.2
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.21
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 30.09
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 47.98
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalPartialResultSetIT.java 37.96
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 35.93
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalVisibilityIT.java 33.92
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 33.19
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.98
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 37.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 35.16
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.35
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalCrashReplayIT.java 35.16
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TransactionalClaim.java 34.92
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 33.19
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java 30.09
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.96
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.92
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.2 ⚠️
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.22
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.84
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java 41.34
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 38.14
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 34.56
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 33.37
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java 30.15
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.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 42.84
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 38.96
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 52.1 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 43.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 38.14
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 34.67
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 39.01
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.52
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 39.01
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.52
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 33.37
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 52.1 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 41.34
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.96
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 34.67
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 34.56
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java 30.08
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.95 ⚠️
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.95 ⚠️
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.3
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.3
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 30.15
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 30.08
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.96
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.48
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/KafkaTestUtils.java 30.6
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.42
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.81
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 40.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitResponseTimeoutSymptomTest.java 31.37
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 34.34
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 31.37
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.89 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 50.58 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 44.49
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java 30.42
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.44
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.44
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.82
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.82
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 34.34
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.71
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.95
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.57
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.57
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorTestBase.java 32.48
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.25
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 30.98
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.81
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 30.98
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 81.99 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.99 ⚠️
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.46
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalBatchVisibilityIT.java 35.93
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 34.92
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.3
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.39
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.81
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 43.07
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.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/metrics/PCMetrics.java 31.33
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 31.96
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.59
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 42.03
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 33.19
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosisTest.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosis.java 30.0
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 37.01
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollContextInternalTest.java 33.19
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.59
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ProduceLockHandover.java 37.01
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 36.86
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionalEagerProcessingIT.java 36.35
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionTimeoutsTest.java 34.21
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java 32.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 31.77
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProduceLockNotHeldException.java 30.05
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.81
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java 37.96
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 35.51
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 32.38
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 31.38
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.3
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.59 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 45.34
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 36.63
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.68
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.68
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.39
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.6
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.51
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.46
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.54
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/MetricsTeardownCannotBreakCloseTest.java 36.38
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.29
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.29
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 31.05
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.37
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckHarness.java 31.05
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.71
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RacingEncodeWindowState.java 37.3
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.71
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitShiftCompounding894Test.java 41.46
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 32.74
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.46
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 34.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateCommitEncodeShift894Test.java 32.74
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.8
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.32 ⚠️
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.32 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/OffsetEncoderWidenedRangeRaceTest.java 37.3
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.79
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.76
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardPopulationRaceTest.java 32.69
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.79
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 34.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java 33.26
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java 31.37
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 33.02
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.8
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/EpochAndRecordsMapRaceTest.java 33.81
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.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 32.95
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardAvailableCountOwnershipTest.java 32.69
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.59 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java 54.09 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/WorkContainer.java 49.46
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 33.26
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 33.02
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkClaimStateMachineTest.java 54.09 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TransactionalBulkCommitTest.java 45.34
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.33
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.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.28
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.98
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java

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

File Similarity (%)
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/ReactorAppTest.java 39.04
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java 36.31
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java 34.95
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.87 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.51 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.09 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 79.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 79.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 81.99 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.38 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.03 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.62 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 76.45 ⚠️
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.31
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.21 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java 35.98
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.93
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 39.04
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.87 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.51 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.09 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 79.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 79.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 81.99 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 81.38 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.03 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 80.62 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 76.45 ⚠️
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.21 ⚠️
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.87 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.51 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.09 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 79.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 79.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.85 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.85 ⚠️
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.93
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 34.95
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.27
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.68 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.58 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 48.55
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.28
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.36 ⚠️
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.26 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.45 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.51 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.51 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.51 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.03 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.03 ⚠️
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.27
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 30.4
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.68 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 51.89 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 49.79
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.28
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.36 ⚠️
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.82 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 85.45 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.09 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.09 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.09 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 80.62 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 80.62 ⚠️
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.33
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 41.63
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 38.19
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 37.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 36.02
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 33.59
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.12
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 38.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.61
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 33.16
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.99
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 37.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 36.12
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.12
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 40.99
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 38.19
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.22
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 30.2
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.26 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.82 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.87 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.87 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.87 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.38 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.38 ⚠️
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.79
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 48.55
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 44.49

astubbs added a commit that referenced this pull request Aug 5, 2026
Lifecycle transition: the entry went in as `ready` with no PR because the number
does not exist until `gh pr create` returns. Advance it to `pr-open` with
prs: [202], and add the merge + #40-unblock actions to its todo list, so
`upstream-map.py todo` shows the loose ends rather than a manifest that claims
the work has no PR.

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

github-actions Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

⚠️ SpotBugs Report

339 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 c434f95 · run 33632165234 · 2026-09-02 13:02 UTC

@claude

claude Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 3m 43s —— View job


Claude finished the review

Todo list

  • Read trigger comment and gather context
  • Examine the diff (git diff origin/master...HEAD)
  • Review moved LongPollingMockConsumer.java for correctness
  • Review bin/check-copyright-headers.sh change
  • Verify claims in PR description (pom scope, SpotBugs finding, etc.)
  • Post final review findings

Review

This is a clean, well-scoped, and unusually well-verified relocation PR. Summary of what I independently confirmed:

  • Actual code diff is exactly what's advertised. With rename detection (git diff -M), the only changes to LongPollingMockConsumer.java are: a Modifications Copyright line, a class-level javadoc paragraph explaining why it now ships in main, and rewriting one @see KafkaTestUtils#assertCommitLists(...) javadoc reference to plain {@code ...} text (correctly avoids a dangling link, since KafkaTestUtils stays in src/test). No behavioural change. The poll()/wakeup()/addRecord() wait-notify logic is byte-for-byte unchanged.
  • No pom.xml changes anywhere (git diff --stat against **/pom.xml is empty) — consistent with the claim that every dependency the class needs (kafka-clients, unij, Lombok, SLF4J) was already compile scope.
  • FQN truly unchanged (io.confluent.csid.utils.LongPollingMockConsumer), confirmed by grepping all 13 non-doc references across the repo (test bases, LongPollingMockConsumerSubject, example modules, MockConsumer*Test classes) — none need edits, matching the "nothing else needed editing" claim.
  • Old test-tree file is gone, new main-tree file is present — clean rename, no duplicate/orphan copy.
  • bin/check-copyright-headers.sh: ran it directly — 232 files, 0 violations, matching the PR's verification claim. Ran bin/test-check-copyright-headers.sh — all 19 self-test assertions pass. The new RENAMED_FROM_UPSTREAM registry line is in the correct newpath|oldpath order.
  • Compiles cleanly: mvn -pl parallel-consumer-core -am compile and test-compile both succeed with the class in src/main.
  • Targeted tests pass: ran MockConsumerTest, MockConsumerEarlyCloseTest, MockConsumerCommitTimeoutTest, MockConsumerSaslAuthenticationTest, ParallelConsumerOptionsTest, WorkManagerTest directly — 31 tests, 0 failures, 0 errors (1 skipped), matching the PR's reported numbers exactly.
  • -Xdoclint:none is indeed configured in root pom.xml (line 998), supporting the claim that a dangling @see would have shipped silently rather than failing the build — which is why rewriting it was still the right call.
  • Docs are accurate and consistent: docs/refactoring.md's new breaking-change entry is correctly placed under the release-gated section (not the non-breaking internal-refactor list); the new NN_NAKED_NOTIFY entry correctly matches the actual code (the guard is an AtomicBoolean, all access is already under synchronized); src/docs/development/upstream-map.yaml's new entry and the corrected issue-162-mvn-compile-fails note are consistent with the PR body's "does NOT close confluentinc#546: Truncating state #162/Error running tests: io.confluent.parallelconsumer.ManagedTruth.assertThat not found confluentinc/parallel-consumer#861" framing; io.confluent.csid.utils genuinely has 10 other classes already shipping in main (Range, JavaUtils, TimeUtils, etc. — confirmed by listing the directory), so the "package is already public" argument checks out.
  • CHANGELOG.adoc correctly left untouched per the repo's documented policy (AGENTS.md: changelog entries are not a per-PR chore).

No issues found. The scope discipline is notable: a class-relocation PR that resists the temptation to also fix the AtomicBoolean/SpotBugs finding or rename the package, and instead queues both as separate, well-reasoned backlog items. The reasoning for keeping the FQN (migration-cost asymmetry, package already public, restructure queued once) is sound and clearly documented for future reviewers.

One minor, non-blocking observation: the new javadoc on LongPollingMockConsumer (lines ~29-33) is a good addition, but it duplicates most of what's now also in docs/refactoring.md and docs/inflight/pr-159-longpolling-to-main.md. That's fine here — javadoc is genuinely the right place for "why does this class live in main," the docs files are for reviewer/session context — just flagging it's intentional triplication rather than an oversight, in case anyone weighs trimming it later.
· branch refactor/159-longpolling-to-main

@astubbs

astubbs commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

Review response

Thanks - the independent re-derivation (rename detection, the pom-scope check, running the copyright scanner and its self-test, the targeted test run) is exactly what makes a "no issues" verdict worth something. Responding to the one observation, plus two things I found while re-checking the review's claims myself.

1. Javadoc / docs/refactoring.md / in-flight note triplication (non-blocking observation)

Partly agreed, and acted on - but not where you suggested.

Keeping the javadoc: agreed with your own read that it is the right home. "Why does this class live in main" is the first question a downstream user has, they will be looking at the class rather than at docs/, and it is three lines. Trimming it would save nothing and cost the only reader who cannot see the other two files. Unchanged.

Where the duplication was genuinely redundant was the third copy, docs/inflight/pr-159-longpolling-to-main.md. That directory's own charter (docs/inflight/AGENTS.md) says these notes are for "context about an open PR that gh cannot tell you" and "never write down what a command can answer" - and that file was restating the PR body nearly verbatim, which gh pr view 202 returns. So in 4a7e4a2 it now states the decisions and points at their durable homes (docs/refactoring.md for the rehome and the SpotBugs item, upstream-map.yaml for the #162/confluentinc#861 non-closure) instead of repeating them. The reasoning is not lost, it just has one home each now.

2. #40 coordination had gone stale - fixed (4a7e4a2)

Not in the review, found while re-checking. Both the in-flight note and the new upstream-map.yaml entry said #40 was queued behind this and should be unblocked "the moment #202 merges". That stopped being true: because this PR edits none of the four MockConsumer* tests, the collision never materialised and #40 went ahead on its own - it is #206, open now.

Left as written, both files were a marker telling the next session to wait for something that had already happened, which is precisely the stale-marker failure mode docs/inflight/AGENTS.md warns about. Both corrected, and the PR body's Coordination section with them.

3. Checklist item 4 was marked N/A and should not have been (body edit)

Also self-caught. It read "N/A - no CI runner or workflow changes", then immediately described editing bin/check-copyright-headers.sh - which .github/workflows/copyright.yml executes. That is a CI change, so the N/A was wrong regardless of how low-risk the edit is.

Now ticked with the actual consideration written out: the change adds one newpath|oldpath line to an inert data registry the scanner reads, no scanner logic, workflow definition or runner configuration changed, no permission granted, hosted runner as before. The self-test (19 assertions) and the scan (232 files, 0 violations) both pass.

4. NN_NAKED_NOTIFY - still deferred, and now better specified

No change to the position: the code is byte-identical, SpotBugs analyses main sources only, so the finding is newly visible rather than newly introduced, and rewriting the wait/notify state that every unit test depends on inside a relocation PR would make any later flake ambiguous between the two causes. The static: spotbugs gate passes; the finding is a warning-level annotation, not a hard failure.

One addition while verifying it. poll() and wakeup() are already synchronized methods, and each opens a further synchronized (this) block inside itself - locking the monitor it already holds. Reentrant, so harmless, but it is what makes the guard/notify pairing hard to read and is probably why the AtomicBoolean looked necessary in the first place. Recorded alongside the deferred fix in docs/refactoring.md so the eventual cleanup does both in one pass rather than demoting the field and leaving the nesting.


Claims re-verified independently before touching anything: no pom.xml in the diff, old test-tree file gone, 10 import io.confluent.csid.utils.LongPollingMockConsumer sites across 16 referencing files all still compiling untouched, scripts/upstream-map.py validate OK (25 entries), copyright scan 232 files / 0 violations.

Changes here are documentation and the PR body only - no source, test or build change since your review.

astubbs added a commit that referenced this pull request Aug 5, 2026
…ng readers it blocks

The in-flight note and the upstream-map entry both said fork #40 was queued behind
this PR and should be unblocked "the moment #202 merges". That stopped being true:
this branch edits none of the four MockConsumer* tests, so the collision never
materialised and #40 went ahead on its own as PR #206, open now. Left as written,
both files were a stale marker telling the next session to wait for something that
already happened - exactly the failure mode docs/inflight/AGENTS.md warns about.

Also trims the in-flight note down to what `gh pr view` and the diff cannot answer.
The review flagged the package/SpotBugs reasoning as intentional triplication across
javadoc, docs/refactoring.md and this file; the javadoc and refactoring.md are the
right homes for it, so this file now states the decisions and points at them instead
of restating them in full.

While verifying the SpotBugs entry, noted that poll() and wakeup() are already
synchronized methods that each open a further synchronized (this) block on the
monitor they hold. Reentrant so harmless, but it is what makes the guard/notify
pairing hard to read, and likely why the AtomicBoolean looked necessary - recorded
with the deferred fix so it gets cleaned up in the same pass.

Refs #159 · upstream confluentinc#526

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 finished @astubbs's task in 1m 45s —— View job


Claude finished the review

Todo list

  • Read trigger comment and gather context
  • Diff since the previous review (only new commit: 4a7e4a2b)
  • Verify the doc changes against the actual code and other doc files
  • Re-run copyright scanner to confirm nothing broke
  • Post review findings

Review

Only one commit landed since the last review pass (4a7e4a2b), and it's docs-only — docs/inflight/pr-159-longpolling-to-main.md, docs/refactoring.md, src/docs/development/upstream-map.yaml. No source, test, or build files changed. git diff origin/master...HEAD --stat still shows the same 5 files as before; this commit only touches 3 of them.

What it does, and what I independently checked:

  • Removes the stale "Reduce duplication in MockConsumer* test classes #40 is queued behind this" claim. Both the in-flight note and the upstream-map.yaml todo: list said fork Reduce duplication in MockConsumer* test classes #40 was blocked on this PR and should be unblocked "the moment refactor(core) astubbs#159: ship LongPollingMockConsumer in the main artefact #202 merges." That was already false by the time this commit landed — this branch never touches the four MockConsumer* test files (confirmed in the prior review pass), so the collision never happened and Reduce duplication in MockConsumer* test classes #40 shipped independently as test(core) #40: one harness for the vanilla MockConsumer tests, not five copies #206. Leaving the old wording in would have told a future reader to wait on something already resolved — exactly the stale-marker failure docs/inflight/AGENTS.md warns against. Good catch, correctly fixed.
  • Trims the in-flight note to remove triplication, per the one non-blocking observation from the previous review round. The package/FQN reasoning and the SpotBugs reasoning are now stated once each in docs/refactoring.md, and the in-flight note points at them instead of repeating them in full. The javadoc on the class itself is left untouched, consistent with the reasoning given (it's the copy a downstream reader actually encounters).
  • New docs/refactoring.md addition about redundant lock nesting is accurate. I checked LongPollingMockConsumer.java directly: poll() (line 53) is synchronized and opens a further synchronized (this) block at line 58; wakeup() (line 108) is synchronized and opens another at line 112. Both are genuinely redundant/reentrant nesting on the same monitor, exactly as described. Correctly filed as a follow-up alongside the AtomicBoolean→boolean demotion rather than snuck into this PR.
  • upstream-map.yaml edit is a straight subset of the same fix — removes the stale todo: line, adds a notes: sentence recording that Reduce duplication in MockConsumer* test classes #40 went ahead as test(core) #40: one harness for the vanilla MockConsumer tests, not five copies #206. Structurally consistent with the rest of the file (checked the surrounding issue-526-longpolling-to-main entry; no YAML structure damage).
  • Re-ran bin/check-copyright-headers.sh: still 232 files, 0 violations — unaffected, as expected for a docs-only change.

No issues found. This is a good, self-critical example of a docs commit: two real defects were caught by re-checking the PR's own claims rather than waiting for a reviewer (the stale #40 marker was found by the author, not flagged in my prior review), and the fix is scoped to exactly the drift it corrects — no unrelated rewriting.
· branch refactor/159-longpolling-to-main

@astubbs

astubbs commented Aug 6, 2026

Copy link
Copy Markdown
Owner Author

Merged master - and it required two substantive changes, not just a merge

Merged origin/master (c6fff838) to pick up .github/workflows/repo-hygiene.yml, whose two new required checks (shell: sigpipe, workflows: action versions) this branch predated and so could never report. Both pass locally: the only bin/ edit here adds a data line to a registry, not a pipe into grep -q, and no workflow is touched.

Reading what landed mattered more than the merge. 735b1d3a mirrored all 78 confluentinc issues into this fork, and two consequences hit this branch directly.

1. The upstream-map.yaml entry is gone - the one conflict, resolved in master's favour

AGENTS.md now states the map holds fork → upstream PRs, while upstream issues live in the fork mirrors under the upstream-mirror label. Every issue-* entry was deleted on master - including issue-162-861-906-build-friction, which this branch had appended a note to. The entry this PR added was issue-keyed (confluentinc#526, prs: []), so it is precisely the class that was removed. Re-adding it would have been reinstating the shape master had just retired.

I checked rather than assumed that nothing is lost, and the answer is better than expected:

$ gh issue list -R astubbs/parallel-consumer --label upstream-mirror --state all --search "526 in:body"
astubbs#159  upstream #526: Move LongPollingMockConsumer to main artefact

#159 - the issue this PR closes - is the mirror issue for confluentinc#526. The fork↔upstream mapping the map entry recorded already lives exactly where the new scheme puts it, which is why the entry was redundant rather than merely misplaced. The reasoning it carried survives in docs/refactoring.md, the in-flight note and the PR body. scripts/upstream-map.py validate → OK, 14 entries.

2. Fifteen unqualified issue references would have failed the new gate

This is the one the merge alone would not have caught. With both repos' numbering overlapping completely (the fork starts at 1, confluentinc reaches confluentinc#922), a bare #NN is a coin flip, and .github/scripts/issue-ref-gate.js now fails the PR Checklist job on unqualified refs in added lines.

This branch had 15 - #159, #40, #202, #206, #162, #861, #526, #271 - across docs/refactoring.md, docs/inflight/pr-159-longpolling-to-main.md and bin/check-copyright-headers.sh. All now qualified as astubbs#NN / confluentinc#NN.

I verified this by running the gate module itself over the branch diff rather than checking by eye, since the point of the rule is that a wrong reference still looks fine:

files in diff: 4
FAIL: 15 unqualified ref(s)     # before
PASS: no unqualified refs        # after

upstream #NNN is still accepted by the gate, but I converted those too - "upstream" names a role rather than a repo, and this repo is upstream to anyone who forks it, which is the reasoning master gives for moving off it.

Re-checked, as asked

The #40 correction from the previous round survived the merge and still reads true: astubbs PR #206 is open, this branch edits none of the four MockConsumer* tests, and neither waits on the other. It now says so with qualified references in both the in-flight note and the PR body. The duplicate claim that lived in upstream-map.yaml went with the entry, so there is one statement of it instead of two that could drift apart.

Gates run locally

Check Result
bin/check-shell-sigpipe.sh ok - no bin/*.sh pipes into grep -q under pipefail
bin/check-action-versions.sh ok - every action at a single version
bin/todo-index.sh --check docs/TODO_INDEX.md is up to date
scripts/upstream-map.py validate OK, 14 entries
bin/check-copyright-headers.sh 232 files, 0 violations
bin/test-check-copyright-headers.sh all self-tests pass
issue-ref gate over this diff 15 → 0

No source, test or build change in any of this - the merge and both follow-ups are documentation, one shell comment line, and the PR body. The relocation itself is untouched since the last review.

astubbs added a commit that referenced this pull request Aug 6, 2026
Master's 735b1d3 mirrored all 78 confluentinc issues into this fork, which made
a bare `#NN` ambiguous: the fork numbers from 1 and confluentinc reaches confluentinc#922, so
the ranges overlap completely. The house convention is now `#159` /
`confluentinc#526`, and `.github/scripts/issue-ref-gate.js` enforces it on added
lines via the PR Checklist job.

This branch predates that and had 15 unqualified refs across three files -
`#159`, `#40`, `#202`, `#206`, `#162`, `confluentinc#861`, `#526`, `#271`. Every one is now
qualified. Verified by running the gate module itself over this branch's diff
rather than by eye: 15 findings -> 0.

`upstream #NNN` is still accepted by the gate, but converted anyway - "upstream"
names a role rather than a repo, and this repo is upstream to anyone who forks
it, which is why master moved off it.

No wording changed beyond the references themselves, except the in-flight note,
which now also records that #159 IS the upstream-mirror issue for
confluentinc#526 - that is where the fork<->upstream mapping lives now that the
map entry is gone.

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

claude Bot commented Aug 6, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 3m 13s —— View job


Claude finished the review

Todo list

  • Read trigger comment and gather context
  • Diff since last review round (4a7e4a2b..HEAD, and the real PR diff origin/master...HEAD)
  • Verify claims: upstream-map.yaml entry removal, issue-ref qualification, gate scripts
  • Re-run copyright scanner, TODO index check, shell-sigpipe check to confirm
  • Post final review findings

Review

Only two commits landed since the last review round: 981f67db (merge of origin/master @ c6fff838) and 3bb6b2d8 (qualify issue refs). Confirmed origin/master locally is exactly c6fff838, matching what the PR body describes merging.

Because the merge pulls in a large unrelated upstream history, I diffed against the actual merge base (git diff origin/master...HEAD) rather than commit-to-commit, since that's what will actually land on master. That comes out to exactly the 4 files listed in this PR's file list — nothing more:

  • LongPollingMockConsumer.java: byte-identical to what was reviewed in the first two rounds (still shows as a clean file move relative to current master, no behavioural change).
  • bin/check-copyright-headers.sh: only the comment above RENAMED_FROM_UPSTREAM and the registry line itself, now astubbs#159 / confluentinc#526 qualified. No scanner logic touched.
  • docs/refactoring.md: the diff against current master is a clean +24/-0 — just the two entries described in the PR body (the rehome queue item and the NN_NAKED_NOTIFY item, including the redundant-lock-nesting note that was added in the prior round). The much larger diff I first saw comparing to the pre-merge commit was master's own unrelated restructuring of that file (mirrored-issue tables etc.) — a red herring from diffing the wrong base, not something this PR did.
  • docs/inflight/pr-159-longpolling-to-main.md: unchanged content-wise from the previous round, just re-qualified.

Independently verified, not just read:

  • bin/check-copyright-headers.sh → 232 files, 0 violations (unchanged from prior rounds).
  • bin/todo-index.sh --check → up to date.
  • bin/check-shell-sigpipe.sh → ok, no bin/*.sh pipes into grep -q under pipefail.
  • src/docs/development/upstream-map.yaml → confirmed zero diff against current master; the entry this branch originally added really is gone, and nothing else in that file changed.
  • Issue-ref qualification claim ("15 → 0"): I couldn't execute .github/scripts/issue-ref-gate.js directly in this sandbox (script execution was blocked), so I hand-verified instead — extracted every #N on an added line across the real PR diff and checked each against the gate's own stripQualified regex (\b(?:astubbs|confluentinc)\s*(?:PR\s+|issue\s+)?#\d+). Every hit is qualified: astubbs#159, confluentinc#526, astubbs PR #202, astubbs#40, astubbs PR #206, confluentinc#271, confluentinc#162, confluentinc#861. Zero bare refs remain. Claim holds.

No issues found. This round is exactly what it claims to be: a merge plus two small, correctly-targeted follow-ups (dropping the now-superseded upstream-map.yaml entry, qualifying issue refs to satisfy the new gate). No source, test, or build logic changed since the previous review pass — the relocation itself remains untouched and previously verified.
· branch refactor/159-longpolling-to-main

astubbs added a commit that referenced this pull request Aug 14, 2026
docs/inflight/AGENTS.md is explicit - "Track only what is currently OPEN",
and root AGENTS.md draws the line as "happening now -> docs/inflight/;
should happen later -> refactoring.md". This note failed that on two of
its three sections. The harness is not in flight; it lands with this PR.

Removed, because a permanent home already owns it:

- The design rationale (why it does not extend
  AbstractParallelEoSStreamProcessorTestBase, why assertions stay in the
  subclasses, why a scenario is a subclass rather than another copy) is in
  MockConsumerTestBase's class javadoc, next to the code it constrains.
- The measured similarity figures and the deferred cross-module clone
  backlog are in docs/refactoring.md, which this note already linked to
  while also restating them in full - the duplication AGENTS.md warns
  drifts apart.

What is left is the part that really is transient: this PR moves the
wiring out of six files, so every branch that forked before it conflicts
on them, and the resolution is "keep the harness, re-apply the scenario"
rather than the reverse - re-applying a pre-harness copy silently un-does
the extraction. Plus the #202 pointer. The file now says when to
delete it.
astubbs added a commit that referenced this pull request Aug 14, 2026
The last section standing was a warning that branches forked before this
one will conflict on the six MockConsumer files. That fails
docs/inflight/AGENTS.md's own rule against writing down what a command can
answer: git announces a conflict when you hit it, and gh pr list answers
what #202 is doing. A note whose content the tooling volunteers is
one more thing to keep true, not a service to the next reader.

The one part no command supplies was the resolution - keep the harness,
re-apply the scenario, rather than re-applying a pre-harness copy of the
wiring and silently undoing the extraction. That is already in
MockConsumerTestBase's class javadoc, which says the wiring lives there
"so that a new rejection or outage scenario is a subclass rather than
another copy of the wiring", and it is next to the code a conflict
resolver is looking at rather than in a directory they would have to think
to check.

Nothing references the file. This leaves the PR's docs footprint as
docs/refactoring.md alone, which is the permanent home for the deferred
cross-module clone backlog.
@astubbs
astubbs marked this pull request as draft August 19, 2026 03:11
Downstream projects that want to test against the parallel consumer need a Kafka
MockConsumer that actually long-polls - the AK one returns instantly, so a
control loop under test spins. We have that class, but it lived in
src/test/java, so the only way to get it was a
<classifier>tests</classifier> dependency on parallel-consumer-core. That is an
unpleasant thing to ask of a user: test-jars are not transitive, Maven resolves
them awkwardly (confluentinc#162), and they drag the whole test surface along.

Move it to src/main/java so a plain dependency on parallel-consumer-core is
enough. The package is untouched - src/test/java to src/main/java on the same
bz.stub.parallelconsumer.internal.utils path.

Nothing internal-only becomes public
------------------------------------
The obvious objection is that this is an internal-utils package and the class is
now an API commitment. But that package is ALREADY in the main artefact - Range,
JavaUtils, TimeUtils and seven others ship in the main jar today - so the
artefact's public surface gains a class, not a package.

The original version of this change carried a second argument that no longer
holds and is deliberately dropped rather than replayed: that keeping the
fully-qualified name made the downstream migration a pom edit with no code
change - delete the tests-classifier dependency, keep the import. Master's
io.confluent.* -> bz.stub.* rename has since broken every downstream import
regardless, for reasons that have nothing to do with this class, so there is no
FQN stability left to protect and no saving to weigh a rehome against.

That inverts the deferral, and docs/refactoring.md's breaking-change entry now
says so. A supported test-support class still does not belong in an
internal-utils grab-bag - `internal` in the name now says as much out loud - and
the right home is bz.stub.parallelconsumer.testing, or its own
parallel-consumer-test-support module in the kafka-streams-test-utils mould. The
old reasoning parked that behind the confluentinc#271 restructure to avoid
migrating the same users twice. With 0.6.0.0 unreleased and already carrying the
rename as a breaking change, doing the rehome IN 0.6.0.0 is one migration; it is
now the deferral that costs a second one. Left as a queued decision rather than
taken here, so this stays a relocation.

It dragged nothing with it, and no dependency changed scope
-----------------------------------------------------------
The class needs kafka-clients, unij, lombok and slf4j. All four are already
compile scope, so parallel-consumer-core/pom.xml is untouched and no downstream
user gains a dependency. In particular MockConsumer, MockProducer and the
reflected SubscriptionState are all in the MAIN kafka-clients jar, not its
test artifact - had they not been, promoting a Kafka test artifact to compile
scope for every user of this library would have been too high a price and this
change would not have been worth making.

The only test-only reference was a javadoc @see on KafkaTestUtils, which would
have become a dangling link in the published javadoc; rewritten as plain text,
the same shape UnmailboxableRecordException already uses for the same reason. No
consumer of the class needed editing - not the MockConsumer* tests, not the
examples, not the Truth subject - because only the source root moved.

What this does NOT do
---------------------
It does not close confluentinc#162 / confluentinc#861. Every module that consumes
core's tests classifier still needs it for KafkaTestUtils,
AbstractParallelEoSStreamProcessorTestBase and LongPollingMockConsumerSubject -
verified on this tree: all three are still under src/test, and the mutiny, vertx,
reactor and four example modules still reference them across the classifier. The
last of those is Truth-generator glue: moving it would promote com.google.truth
from test to compile scope for every downstream user, which is exactly the cost
this change was careful not to incur. The README's "mvn compile needs
test-compile" note therefore still stands and is left alone.

The SpotBugs claim is also retired rather than replayed
------------------------------------------------------
The original change recorded NN_NAKED_NOTIFY as a false positive newly *visible*
because SpotBugs analyses main sources and the class was becoming one. Master's
spotbugs-maven-plugin configuration now sets includeTests, so that is no longer
true either: measured with the class still under src/test,
`./mvnw -pl :parallel-consumer-core -am -DskipTests test-compile spotbugs:spotbugs`
already reports NN_NAKED_NOTIFY at LongPollingMockConsumer.wakeup. The move
changes the file's source root, not whether it is analysed. The finding and its
fix stay recorded in docs/refactoring.md, with that measurement, and are
deliberately not acted on here.

Also registers the relocation in bin/check-copyright-headers.sh's
RENAMED_FROM_UPSTREAM. PACKAGE_MOVES maps the package but not the source root, so
without the entry the file resolves to a src/main fork-point path upstream never
had, is judged fork-original, and its required Confluent header is reported as a
violation - confirmed with a control arm: deleting the entry takes the check from
0 to 1 violation, naming this file.

No upstream-map.yaml entry: the manifest maps upstream PRs, and #159 IS
the upstream-mirror issue for confluentinc#526, so it already owns the mapping.
The in-flight note says so rather than duplicating it.

Verified: parallel-consumer-core unit suite green (533 tests, 0 failures, 8
skipped); main jar contains LongPollingMockConsumer.class and the tests jar no
longer does (it keeps only LongPollingMockConsumerSubject.class); javadoc jar
builds and publishes the class; check-copyright-headers, check-issue-refs,
check-inflight-tags, check-file-refs, check-branch-self-reference,
check-upstream-map, check-docs-data and todo-index --check all pass.

Upstream-Issue: confluentinc#526
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
astubbs force-pushed the refactor/159-longpolling-to-main branch from 56c895c to e3c3175 Compare September 1, 2026 00:30
@github-actions

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

astubbs commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

@claude review this

Context: this branch was re-cut onto today's master, not merged. Its previous head carried its own copy of the io.confluent.* → bz.stub.* rename, which master has since completed itself — merging produced 100 conflicts, dominated by rename/delete and add/add on the same classes. The rename commits were discarded and only the payload replayed: the whole change is now a git mv plus a javadoc delta and three doc edits.

Two arguments the original PR rested on did not survive and are explicitly retired in the body. Please check I retired them correctly rather than over- or under-claiming:

  1. The FQN-stability argument is dead. The original said keeping io.confluent.csid.utils made the downstream migration "a pom edit with no code change". Master renamed the package to bz.stub.parallelconsumer.internal.utils regardless, so that is no longer something this PR can offer. What survives is only "nothing internal-only becomes public" — the package already ships in the main jar.

  2. The SpotBugs claim was false, and not because of the rename. The original said NN_NAKED_NOTIFY was newly visible because "SpotBugs analyses main sources". Master's root POM now sets includeTests, and the finding was measured as already reported on master before this change with the class still in src/test. The reproduce line is in docs/refactoring.md.

Also worth a look:

Claim (a) in the body — that this does not eliminate the test-jar dependency — was re-verified on today's master: all three blocking classes still under src/test, eight poms still declaring the classifier.

@claude

claude Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

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


Todo list

  • Read trigger comment and gather context
  • Verify the re-cut diff is what's claimed (git mv + javadoc + 3 doc edits)
  • Check claim 1: FQN-stability argument retirement wording
  • Check claim 2: SpotBugs claim correction + reproduce line in docs/refactoring.md
  • Check the deferral-inversion reasoning
  • Verify copyright control-arm claim
  • Verify Reduce duplication in MockConsumer* test classes #40 section deletion and test-jar re-verification claim
  • Post final review findings

Review

Went through each self-audit item in the trigger comment independently rather than trusting the write-up. All of them hold up.

1. FQN-stability argument — correctly retired. docs/refactoring.md:104-115 and docs/inflight/pr-202-longpolling-to-main.md:18-27 both state the same thing, in the same terms, and agree with each other: what survives is only "nothing internal-only becomes public" (the internal.utils package already ships classes like Range/JavaUtils/TimeUtils in the main jar today — confirmed those exist), and the "pom edit with no code change" framing is explicitly dropped because the fork-wide io.confluent.* → bz.stub.* rename already broke every downstream import regardless of this PR. No over- or under-claim — the surviving argument really is narrower than the original one.

2. SpotBugs claim — the correction is real, not cosmetic. Checked pom.xml directly: spotbugs-maven-plugin's <includeTests>true</includeTests> is set at the root (line 1211), with a comment explaining it turned on recently for exactly the reason given ("Test code is main code for a concurrency library"). That confirms the mechanism — NN_NAKED_NOTIFY is visible today with the class still under src/test, so moving it to src/main doesn't change what SpotBugs sees. docs/refactoring.md:688-707 carries the reproduce command and correctly separates "the finding is old and unrelated to this PR" from "here's the actual fix, deferred on purpose." I couldn't execute the mvn spotbugs:spotbugs reproduce line myself (script/mvn execution needs an allowlist grant I don't have in this run), but the includeTests flag alone is sufficient to confirm the mechanism is real.

3. Deferral inversion — sound reasoning, correctly left queued rather than done. The logic in docs/refactoring.md:112-115 checks out against docs/refactoring.md:69,76 (the breaking-change gate is open, 0.6.0.0 is the release carrying the rename). Doing the testing-package rehome inside the same major as the bz.stub rename really is one migration instead of two if it happens before 0.6.0.0 ships. Whether to act on that now is a judgment call, and deferring it here is defensible: this PR is deliberately scoped as a pure relocation, and bundling a second package move would undercut that scoping and the "no behavioural change" review story. The risk is that a release-gated queue item is easy to forget once the gate closes — but that's exactly what docs/refactoring.md's breaking-change section and the "gate is OPEN" framing exist to prevent, so the tracking is in the right place.

4. Copyright control-arm claim — verified by reading the checker's logic, since I couldn't execute the script in this run. The RENAMED_FROM_UPSTREAM line (bin/check-copyright-headers.sh:327) is in the required newpath|oldpath order, and the script's own header (lines 51-60) explains exactly the failure mode being guarded against: without the entry, fork_point_path() can't resolve the file's current path back to its fork-point blob (it moved both package and source root), so it would be judged fork-original — and a fork-original file carrying Copyright (C) 2020-2024 Confluent, Inc. (which this file's header still does, correctly, since it's upstream-derived) is precisely the FAIL (fork-original file claims Confluent copyright) case. The claim is consistent with the code, not just asserted.

5. #40 section — cleanly deleted, not left stale. docs/inflight/pr-202-longpolling-to-main.md has zero mention of #40 or #206; the other astubbs#40 hits in the repo (docs/refactoring.md:729,758,909) are the unrelated cross-module test-dedup backlog item, not a collision marker for this branch. Matches the claim.

6. Test-jar re-verification — confirmed on the current tree, not just asserted: KafkaTestUtils.java, AbstractParallelEoSStreamProcessorTestBase.java, and LongPollingMockConsumerSubject.java are all still under parallel-consumer-core/src/test/java. LongPollingMockConsumerSubject does extend com.google.common.truth.Subject (line 29), so the "moving it would promote Truth from test to compile scope" reasoning is accurate. Exactly 8 poms still declare <classifier>tests</classifier> (vertx, reactor, mutiny, and the four+one example modules) — matches the count given.

One thing not in the trigger's list, worth a note rather than a blocker: the code content of LongPollingMockConsumer.java itself is unchanged from the version reviewed in the earlier rounds on this PR (same javadoc, same synchronized-nested-inside-synchronized structure, same @see KafkaTestUtils#... → {@code ...} rewrite). No new defects introduced by this re-cut — it really is limited to the package/source-root replay plus the three doc files.

No issues found. This is a well-executed re-cut: it distinguishes cleanly between "argument that quietly stopped being true" (FQN stability, SpotBugs visibility) and "argument that's still true" (nothing-internal-becomes-public, test-jar dependency unchanged), and every corrected claim is now backed by something checkable rather than asserted from memory.
· branch refactor/159-longpolling-to-main

… flags

`repo: hygiene` went red on this branch without a line of it changing: master gained
`bin/check-branch-self-reference.sh`, and the re-cut renamed this PR's note from
`pr-159-longpolling-to-main.md` to `pr-202-longpolling-to-main.md` and retitled its
mentions to #202. The gate's PR-number arm reads whole files, so six mentions
of #202 became unattested self-references and the job failed.

The two mentions are different cases and get different markers, which is the
distinction the gate's header insists on:

- `docs/inflight/pr-202-longpolling-to-main.md` is this PR's own note - the gate
  names exactly that case for `post-merge: exempt-file`, a scope opt-out rather
  than an attestation. The merge deletes the file, so no sentence in it survives
  to read wrongly.
- `docs/inflight/branch-package-rename-sweep.md` cites #202 twice, both as
  past-tense record of what the package-rename sweep found ("verified on
  #202"; "#202 traced the whole cascade back to one deleted line").
  Those read identically after the merge - PRs are permanent, and it is the branch
  and the present tense that rot - so they take `post-merge: checked` blocks. Both
  are prose/table spans, so the block form avoids splitting a paragraph or a table
  row with an inline comment.

Verified with `GITHUB_HEAD_REF=refactor/159-longpolling-to-main PR_NUMBER=202
bin/check-all.sh --with-tests`: 41 ran, 41 passed, previously 40 passed / 1 failed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
@astubbs astubbs changed the title refactor(core) #159: ship LongPollingMockConsumer in the main artefact refactor(core) astubbs#159: ship LongPollingMockConsumer in the main artefact Sep 1, 2026
@astubbs
astubbs marked this pull request as ready for review September 1, 2026 02:11
…onto master

The note carried `post-merge: exempt-file - the merge deletes it`, and said so again
in its opening paragraph. docs/inflight/AGENTS.md forbids exactly that:

    Never leave a "delete this when #NN merges" marker on master. The merge is
    exactly when nobody is looking here, so the marker outlives the work and the
    next reader inherits a stale note that reads as live.

Merging the PR would have ADDED a file whose own text says the merge removes it -
so the marker would have shipped and then sat there. The directory's four outcomes
say to migrate what outlives the work first, and `git rm` only once nothing left is
both true and unowned.

Two of its three items were already owned by docs/refactoring.md and were being
restated rather than staged: the rehome out of `internal.utils` (with the reasoning
for doing it in 0.6.0.0 rather than after) and the NN_NAKED_NOTIFY false positive
with its measurement.

The third was not owned anywhere, so it is migrated here rather than lost: that this
move is a PREREQUISITE and not a fix for the test-jar, and that `KafkaTestUtils` -
not the Truth subject, which cannot move without promoting com.google.truth to
compile scope for every downstream user - is where anyone closing confluentinc#162 /
confluentinc#861 should start.

Nothing else cited the note; check-file-refs, check-inflight-tags and
check-issue-refs are clean after the removal.
astubbs added a commit that referenced this pull request Sep 1, 2026
…owners

The note carried `post-merge: exempt-file - ... it is deleted when that PR lands`.
docs/inflight/AGENTS.md forbids exactly that:

    Never leave a "delete this when #NN merges" marker on master. The merge is
    exactly when nobody is looking here, so the marker outlives the work and the
    next reader inherits a stale note that reads as live.

Merging would have ADDED a file whose own text says the merge removes it, so the
marker ships and then sits there. Same defect #202 had, fixed the same way:
the directory's four outcomes say migrate what outlives the work first, and `git rm`
only once nothing left is both true and unowned.

MIGRATED, because none of it dies with the branch:

- The defect class - eight live instances, two named as worth doing next, and three
  dismissed with reasons - is SPLIT into its own note,
  docs/inflight/bug-unbounded-log-lines.md, rather than compressed into
  docs/refactoring.md.
  That file is explicitly for refactors "too small to deserve their own note, a line
  or two each"; this carries anchors, a decision about where the fix belongs (on the
  type, not the call site) and the dismissals, which are the part a line would lose.
  RecordBatchSummary's javadoc now points at it, so the next person writing a batch
  log line meets it from the code rather than by grepping.
- Every anchor in it was re-grepped rather than copied, and two claims were corrected
  in the move. #168 (confluentinc#629) asked for exactly the topic/partition/
  offset that ConsumerOffsetCommitter's error line carries, so a fix there must keep
  the identifiers and cap only the metadata string - the note previously read as
  though the whole map could be summarised away. And the examples module is not the
  "single WorkContainer, one key no value" case the three library modules are: CoreApp
  interpolates a raw ConsumerRecord, whose Kafka toString does print the value. It
  stays dismissed (one record, bounded, user-editable example code), but for a
  different reason than it was recorded under.
- The two inline `ListAppender` copies still in SubmitWorkToPoolShutdownRaceTest, with
  the standing follow-up to treat LogCapture as the only way to do this, go to
  docs/refactoring.md beside the other copy-pasted-test-helper entries. That one IS a
  line or two, so it belongs there and not in a note.
- The branch-specific flake lead moves into UserFunctionFailureLoggingTest's own
  javadoc, next to the @isolated it explains: without that annotation,
  closeAfterSingleMessageShouldBeEventBasedFast and
  queuedMessagesNotProcessedOrCommittedIfSubmittedDuringShutdown failed. Naming them
  there makes the lead reachable by grepping either test's name, which is how a future
  debugger of those two would arrive - a deleted branch note is not.

CONFIRMED ALREADY OWNED, so it dies with the note rather than being restated:

- The fork<->upstream mapping - the upstream-pr-log-noise entry in
  src/docs/development/upstream-map.yaml carries it, including why confluentinc#918/confluentinc#919 were read
  and not taken, and that the entry stays open after this lands.
- LogCapture's two hazards - its class javadoc states both, and which fix each takes.
- The log.debug inside logWithoutEscaping - the comment beside it, written in 394f462.
- The #201 overlap - settled: origin/fix/155-load-factor-noise has merged this
  branch and LoadFactorCeilingReportingTest now uses the shared LogCapture, so there is
  nothing left to coordinate in either merge order.
- "AbstractParallelEoSStreamProcessor.java is a contended file" - transient by nature,
  and the note itself said the answer is `gh pr diff --name-only`, not a file.

Nothing in the tree cited the deleted note: `grep -rn pr-log-verbosity` is empty, and
check-all.sh (15 gates, including check-file-refs, check-inflight-tags,
check-branch-self-reference and check-issue-refs) plus `bin/todo-index.sh --check` are
clean after the removal. Core unit suite unchanged at 546 run / 0 failures / 0 errors
/ 8 skipped.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMeraeBL2ycXVHEaTHM86W
@astubbs astubbs added the 0.6.0.0 Targeted at the 0.6.0.0 release label Sep 1, 2026
@astubbs astubbs added this to the 0.6.0.0 milestone Sep 1, 2026
@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.

Updated for c434f95 · run 33632165387 · 2026-09-02 12:56 UTC

@astubbs astubbs left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

lgtm

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

🟢 Throughput — OK

This branch measured about 2% faster than master, on the one test this measures. That is INSIDE this test's own run-to-run spread of about 17%, so read it as a reading and not as a result - re-running the same commit moves it by about as much.

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

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

What the numbers mean, and what they cannot tell you

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

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

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

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

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

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

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

Runs used: 3ae5dc3, beb01e1, 276fdff, 8f51d42, a694102

Updated for c434f95 · run 33632165234 · 2026-09-02 13:03 UTC

@codecov

codecov Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.11%. Comparing base (beb01e1) to head (c434f95).
⚠️ Report is 1 commits behind head on master.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##             master     #202      +/-   ##
============================================
- Coverage     81.45%   81.11%   -0.35%     
- Complexity        0     1393    +1393     
============================================
  Files            83       91       +8     
  Lines          4448     4934     +486     
  Branches        456      478      +22     
============================================
+ Hits           3623     4002     +379     
- Misses          644      737      +93     
- Partials        181      195      +14     
Flag Coverage Δ
chaos 54.89% <ø> (?)
integration 63.76% <ø> (-17.70%) ⬇️
performance 53.45% <ø> (?)
unit 75.84% <ø> (-5.62%) ⬇️

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

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

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

@astubbs
astubbs merged commit 626fc32 into master Sep 2, 2026
36 of 39 checks passed
@astubbs
astubbs deleted the refactor/159-longpolling-to-main branch September 2, 2026 14:15
astubbs added a commit that referenced this pull request Sep 2, 2026
…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
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

1 participant