Skip to content

fix(ci): a comment inside the PIT invocation's line continuation truncated it, so the lane mutated every module - #371

Merged
astubbs merged 3 commits into
masterfrom
ci/pit-lane-line-continuation
Aug 26, 2026
Merged

astubbs merged 3 commits into
masterfrom
ci/pit-lane-line-continuation

Conversation

@astubbs

@astubbs astubbs commented Aug 26, 2026 •

Copy link
Copy Markdown
Owner

Description

bin/ci-mutation-test.sh explained its -DexcludedTestClasses flag with a comment placed inside the backslash continuation of its ./mvnw invocation. A backslash-newline splices the next line onto the command, so the # terminated it: Maven received everything up to -DtargetTests and nothing after, and each remaining line ran as a separate command.

What the lane lost, on every run

  • -pl parallel-consumer-core -am — so it was not PR-scoped at all. It walked the whole reactor: ~24 minutes on core, then died in parallel-consumer-vertx with "No mutations found", a module no PR had touched. That is how this was noticed.
  • -DexcludedTestClasses — the Lincheck harness exclusion the truncating comment was itself describing. Those harnesses assert a violation is found, so mutating against them is meaningless and slow; test(core): a Lincheck lane, calibrated by refinding four real races unaided #347 added the flag for exactly that, and it never arrived.
  • -DjvmArgs, -DoutputFormats, both timeouts, -Dthreads, and "$@".

Then the orphaned -DexcludedTestClasses=... line executed as a command — command not found, exit 127. Its own 2>&1 | tee "$PIT_LOG" overwrote the log the script parses for its verdict, and STATUS=${PIPESTATUS[0]} read that orphan pipeline rather than Maven's. So the lane's report was computed from a clobbered log, with a status from the wrong command.

The fix is structural, not a warning

The arguments are now built as an array and passed as ./mvnw "${pit_args[@]}" "$@". There is no continuation to splice a # through, so a comment beside any element is inert — reintroducing this defect now requires converting back to a continuation first. Verified rather than assumed: a probe array carrying a comment mid-literal yields every element, exit 0, shellcheck clean.

The first draft of this PR instead hoisted the comment and left a "keep comments out of the invocation below" warning. Review pointed out that is a rule someone has to remember, and that the argv arms only catch a truncation if the dropped flag happens to be one they assert. The array removes the mechanism instead. A pleasant consequence: the Lincheck comment can go back to sitting immediately above the flag it explains — where it originally was, and what broke the lane.

The array form initially tripped SC2054 (shellcheck reading the comma in -DoutputFormats=XML,HTML as an element separator). The element is quoted rather than suppressed — this PR's argument is that per-code exceptions are what to avoid.

The self-test could not have caught it, and said so in its own header

bin/test-ci-mutation-test.sh opened with "NO MAVEN RUNS HERE" — a blind spot described as a feature. Every arm took the PIT_DRY_RUN_LOG branch, so nothing exercised the branch that invokes Maven, and the suite stayed green through a broken invocation.

Five argv arms now run the real branch against a stub mvnw that records what it was handed. Proven red against master's script: exactly those 5 fail, the pre-existing arms pass either way — which is the evidence they were never capable of catching this.

A simplify pass then found a second-order bug in those new arms: the fixture wrote status="KILLED" while the subject only greps status='...', so the arms were silently landing on the exit-2 "scored NOTHING" verdict and passing anyway, because they assert argv and never the exit code. A fixture quietly disagreeing with the thing it tests — the same defect class this PR exists to fix. Now routed through the existing write_pit_report.

Why this is not a new ShellCheck rule

ShellCheck names it — SC2215, "This flag is used as a command name. Bad line break or missing [ .. ]?" (verified verbatim) — but it is a warning, and bin/check-shell-lint.sh gates at error. Promoting the single code was rejected: the severity register has a deliberate one-knob rule because per-code lists grow, and this repo already removed that shape from SpotBugs. The incident is instead recorded as the argument for raising the floor tier-wide, which stays its own work.

docs/inflight/static-shell-lint-severity-tiers.md carries that, and two corrections the simplify pass caught in it: its reproduce snippet had no shebang, so shellcheck --severity=error returned SC2148/exit 1 rather than the "silent, exit 0" printed beside it — the snippet disproved its own point — and raw counts were replaced by the commands that yield them, per the counts rule in docs/inflight/AGENTS.md.

Defect-class sweep

shellcheck --include=SC2215 across bin/, .claude/hooks/ and .github/ matches no sites now, and matched only the one fixed here before. No siblings.

Verification

Note what this PR's own CI does not prove: it changes no Java, so the mutation lane correctly reports "nothing in scope" and exits before the invocation. The green tick is the scoping arm working, not evidence the fixed invocation runs. That evidence is behavioural and local:

  • bin/test-ci-mutation-test.sh — 25 passed, 0 failed
  • bin/check-all.sh — 15 passed, 0 failed, 0 could not run
  • Red control, re-run after the array change: restoring master's script fails exactly the 5 argv arms and passes the rest; 25/25 on restore

Checklist

  • Docs updated — docs/inflight/static-shell-lint-severity-tiers.md gains the SC2215 incident, the (corrected) reproduction of the severity gap, and why a per-code promotion was rejected.
  • User-facing feature documentation data added under docs/features/ — N/A — CI tooling, no user-facing behaviour.
  • Tests added/updated — five argv arms, proven red against the pre-fix script, plus the fixture-parity fix.
  • Title & body reflect the final content of this PR
  • Ran ce-simplify and ce-code-review locally — ce-simplify was run (it found the fixture/subject status= mismatch and two errors in the note). ce-code-review was not run locally; @claude review this was used on the PR instead, which is cheaper and is the only route that opens inline review threads. Its array suggestion is what produced the structural fix above.

…cated it, so the lane mutated every module

`bin/ci-mutation-test.sh` explained its `-DexcludedTestClasses` flag with a
comment placed INSIDE the backslash continuation of the `./mvnw` invocation.
A backslash-newline splices the next line onto the command, so the `#`
terminated it: Maven received everything up to `-DtargetTests` and nothing
after, and each remaining line ran as a SEPARATE command.

What the lane actually lost, every run:

- `-pl parallel-consumer-core -am`, so it was not PR-scoped at all. It
  walked the whole reactor - ~24 minutes on core, then died in
  parallel-consumer-vertx with "No mutations found", a module no PR had
  touched.
- `-DexcludedTestClasses`, the Lincheck harness exclusion the truncating
  comment was itself describing. Those harnesses assert a violation IS
  found, so using them as the suite PIT mutates against is meaningless and
  slow - #347 added the flag for that reason and it never arrived.
- `-DjvmArgs`, `-DoutputFormats`, both timeouts, `-Dthreads` and `"$@"`.

Then the orphaned `-DexcludedTestClasses=...` line executed as a command:
"command not found", exit 127. Its own `2>&1 | tee "$PIT_LOG"` OVERWROTE the
log the script parses for its verdict, and `STATUS=${PIPESTATUS[0]}` read
that orphan pipeline rather than Maven's. So the lane's report was computed
from a clobbered log with a status from the wrong command.

Reproduced minimally rather than argued - a stub receiving three of its
seven arguments, then `command not found`, exit 127.

THE SELF-TEST COULD NOT HAVE CAUGHT IT, AND SAID SO IN ITS OWN HEADER.
`bin/test-ci-mutation-test.sh` opened with "NO MAVEN RUNS HERE. Every case
either exits before the build or feeds a captured PIT log through
PIT_DRY_RUN_LOG" - which is a blind spot described as a feature. Every arm
took the dry-run branch, so nothing exercised the branch that invokes Maven,
and 24 arms stayed green through a broken invocation. Five argv arms now run
the real branch against a stub `mvnw` that records what it was handed. Proven
red against master's script: the 5 new arms flip, the 20 pre-existing ones
pass either way - which is the evidence they were never capable of catching
this.

WHY THIS IS NOT A NEW SHELLCHECK RULE. ShellCheck does name it - SC2215,
"This flag is used as a command name. Bad line break?" - but it is a
`warning`, and `bin/check-shell-lint.sh` gates at `error`, so the gate passed
it. Promoting the single code was rejected: the severity register's one-knob
rule exists because a per-code list grows, and this repo has already removed
that shape from SpotBugs once. The floor is the knob. What changed is the
argument for raising it - `static-shell-lint-severity-tiers.md` recorded the
warning tier as having no defect behind it, and now it has one, with a
two-line reproduction of the gap.

Defect-class sweep: `shellcheck --include=SC2215` across all 82 scripts in
`bin/`, `.claude/hooks/` and `.github/` finds exactly one site - the one
fixed here. No siblings.

The repo's own `check-shell-sigpipe.sh` then caught a real bug in the new
test code - a `grep -A1 ... | grep -q` whose EPIPE would fail the check when
it FOUND the flag. Rewritten as a herestring, as that gate instructs.

Verified: bin/test-ci-mutation-test.sh 25 passed 0 failed; bin/check-all.sh
15 passed, 0 failed, 0 could not run.
@github-actions

Copy link
Copy Markdown

Dependency Review

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

Scanned Files

None

@github-actions

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

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

PR Base Change
Clones 81 81 ➖ 0
Duplicated lines 1191 1191 ➖ 0
Duplication 1.08% 1.09% 🙂 -0.01%
Rule Limit Status
Max duplication 2% ✅ Pass (1.08%)
Max increase vs base +0.1% ✅ Pass (-0.01%)

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown

📌 Duplicate code detection tool report

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

🆕 New file similarities introduced

File A File B Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCap.java 30.0

🔺 Increased similarities

File A File B Base (%) PR (%) Change
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 37.2 38.0 +0.8
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 58.1 58.6 +0.5
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/ChaosScenarioBase.java 32.4 32.6 +0.2
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 43.0 43.2 +0.2
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 38.5 38.7 +0.2
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/AmbientProbeExtension.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AmbientProbeExtensionTest.java 31.1 31.3 +0.2
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/ProgressProbe.java 33.4 33.5 +0.1
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 37.5 37.6 +0.1
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/ChaosChurnStormIT.java 38.4 38.5 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitResponseTimeoutSymptomTest.java 34.1 34.2 +0.1
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/ProgressProbe.java 36.7 36.8 +0.1
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/ChaosRevokeUnderWorkIT.java 30.5 30.6 +0.1
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/ChaosScenarioBase.java 36.1 36.2 +0.1
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/ChaosKeyOrderIT.java 40.2 40.3 +0.1
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/ChaosKeyOrderIT.java 46.6 46.7 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 31.2 31.3 +0.1
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/ChaosRevokeUnderWorkIT.java 33.9 33.9 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java 38.2 38.3 +0.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosis.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosisTest.java 33.6 33.7 +0.1
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueLincheckTest.java 32.2 32.2 +0.1

...and 73 more

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

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

File Similarity (%)
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CommitPathVisibilityProbes.java 43.25
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 38.71
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 38.04
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/SeenSucceededOrderingProbes.java 37.64
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 58.58 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 43.25
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 38.04
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 58.58 ⚠️
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/BootstrapResetTripleWriteProbes.java 38.71
jcstress-poc/src/main/java/bz/stub/parallelconsumer/jcstress/CalibrationProbes.java 37.64
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 52.58 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 37.55
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 34.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 33.8
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 32.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 31.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 31.11
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 63.93 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 57.85 ⚠️
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 42.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 40.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 35.32
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 33.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 32.72
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 30.93
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 63.93 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 53.86 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 39.95
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 34.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 34.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 32.84
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 32.29
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/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 34.52
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 32.12
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 52.58 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 51.86 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 42.27
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 32.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 31.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 31.28
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/ProducerManager.java 31.14
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 57.85 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 53.86 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 48.41
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 36.28
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 34.02
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 32.55
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 32.23
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 48.41
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 40.69
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 39.95
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 35.49
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 41.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 30.89
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/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 36.28
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 35.32
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 34.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/RecordContextInternal.java 33.89
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContext.java 30.89
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 41.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PollContextInternal.java 33.89
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 44.54
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/BrokerPollSystem.java 33.61
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java 32.78
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 33.61
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/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCommitRetryBudgetTest.java 30.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitResponseTimeoutSymptomTest.java 34.24
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-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 39.96
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 57.93 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 51.86 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 49.41
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 47.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 40.27
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 37.55
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 34.13
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/PCRetriableException.java 32.12
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 31.1
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 30.33
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 40.27
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 31.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 30.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 32.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 32.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 32.55
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleTestEnv.java 31.8
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 33.71
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/AmbientProbeExtension.java 33.16
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ProducerManager.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerOptions.java 31.14
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 33.6
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/CollectionUtils.java 31.35
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 38.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 33.6
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 49.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 35.35
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 34.47
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 34.13
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 32.68
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 32.39
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 30.54
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 57.93 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 49.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 46.44
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 46.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 44.9
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 44.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 42.27
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 33.8
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalRuntimeException.java 30.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 47.57
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/OffsetDecodingError.java 44.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 44.72
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 35.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 34.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.41
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 46.44
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 44.88
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.84
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelConsumerException.java 31.28
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.54
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 61.45 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 46.04
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 35.75
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 35.35
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.91
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 31.1
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 61.45 ⚠️
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/EncodingNotSupportedException.java 44.9
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/NoEncodingPossibleException.java 34.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 34.47
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ExceptionInUserFunctionException.java 31.11
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/InternalException.java 30.33
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/PartitionStateManager.java 32.85
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 40.14
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/PartitionState.java 32.85
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ProcessingShard.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/state/ShardManager.java 34.23
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 34.23
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 40.14
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/AmbientProbeExtension.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PollThreadStallDiagnosis.java 33.16
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AmbientProbeExtensionTest.java 31.32
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 32.16
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/ManagedPCInstanceLifecycleIT.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstance.java 31.0
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 57.09 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 43.73
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 35.87
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 39.83
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 39.21
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 35.87
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

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

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

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 35.82
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 54.2 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 43.73
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 39.21
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 31.15
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 57.09 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 54.2 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 39.83
parallel-consumer-vertx/src/test-integration/java/bz/stub/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 35.53
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/ChaosRevokeUnderWorkKeyOrderIT.java 40.4
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 40.3
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 38.47
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java 36.81
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 33.92
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCap.java 30.03
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 46.71
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 38.47
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 32.63
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkKeyOrderIT.java 54.1 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 46.71
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 40.3
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosScenarioBase.java 36.23
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ProgressProbe.java 33.52
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/KeyOrderLedger.java 32.45
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.68
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 43.73
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.68
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkIT.java 30.57
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 43.73
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 33.92
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosRevokeUnderWorkDrainIT.java 30.57
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 54.1 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 40.4
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/ChaosKeyOrderIT.java 36.23
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosChurnStormIT.java 32.63
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 53.27 ⚠️
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/AbstractRevokeUnderWorkScenario.java 30.03
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCapIT.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/DiagnosticQuietCap.java 53.27 ⚠️
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 33.02
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 32.45
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 33.02
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 36.81
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/chaostests/ChaosKeyOrderIT.java 33.52
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/utils/ManagedPCInstance.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/ManagedPCInstanceLifecycleIT.java 31.0
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 41.46
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.78
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/internal/utils/KafkaTestUtils.java 32.05
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AmbientProbeExtensionTest.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/AmbientProbeExtension.java 31.32
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.1
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/QuarantineLaneReportScriptTest.java 48.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 46.5
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 32.83
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 39.82
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerOffsetCommitter.java 34.24
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CommitRejectionTestBase.java 32.83
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.78 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyBatchTest.java 50.19 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 44.7
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/BatchTestBase.java 30.1
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.24
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.24
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 39.82
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 34.36
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 34.36
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 48.31
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineRegistryScriptTest.java 31.48
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 46.5
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/QuarantineLaneReportScriptTest.java 31.48
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.21 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.27 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.27 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.83 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.83 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.83 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 82.33 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 82.33 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/ConsumerManagerCommitRetryBudgetTest.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ConsumerManager.java 30.82
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/PCModuleTestEnv.java

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

File Similarity (%)
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/PCModule.java 31.8
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 33.71
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 44.54
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/AbstractParallelEoSStreamProcessorConfigurationTest.java 41.46
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 34.02
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.93
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 32.48
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 32.48
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 38.29
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/utils/Java8StreamUtils.java 31.35
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 32.05
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/internal/utils/LoopingResumingIteratorTest.java

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

File Similarity (%)
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/KafkaSanityTests.java 32.16
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 38.26
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java 38.26
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckHarness.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java 32.66
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 34.93
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckHarness.java 32.66
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/RetryQueueLincheckTest.java 32.22
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/ShardManagerLincheckTest.java 31.27
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 43.18
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 32.22
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueTest.java 30.73
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/WorkManagerLincheckTest.java 30.64
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/RetryQueueLincheckTest.java 30.73
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 43.18
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/LincheckToolchainProbeTest.java 34.93
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/state/PartitionStateLincheckTest.java 31.27
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/RetryQueueLincheckTest.java 30.64
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.17
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.17
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 37.06
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 40.1
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/integrationTests/CoreAppMetricsIntegrationTest.java 36.38
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/VertxAppTest.java 35.85
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.83 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 83.58 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 80.34 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 80.34 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 82.33 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.08 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.19 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 81.19 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 77.49 ⚠️
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.38
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.82 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/main/java/bz/stub/parallelconsumer/examples/core/CoreApp.java 37.06
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 46.89
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 40.1
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.83 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 83.58 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 80.34 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 80.34 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java

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

File Similarity (%)
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/TestConventionsArchTest.java 82.33 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 82.08 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 81.19 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 81.19 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 77.49 ⚠️
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.82 ⚠️
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.83 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 83.58 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 80.34 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 80.34 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 78.9 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 78.9 ⚠️
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 46.89
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/CoreAppTest.java 35.85
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 51.53 ⚠️
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 79.04 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 50.19 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 48.48
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 70.89 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyUnitTestBase.java

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

File Similarity (%)
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorUnitTestBase.java 31.98
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.27 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.0 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 85.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.19 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.19 ⚠️
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 51.53 ⚠️
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 79.04 ⚠️
parallel-consumer-core/src/test/java/bz/stub/parallelconsumer/CoreBatchTest.java 51.78 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java 50.01 ⚠️
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 70.89 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/ReactorUnitTestBase.java

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

File Similarity (%)
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/MutinyUnitTestBase.java 31.98
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.27 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/TestConventionsArchTest.java 86.0 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 85.07 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 82.67 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 81.19 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 81.19 ⚠️
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 42.49
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 41.63
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 41.45
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/VertxParallelStreamProcessor.java 37.53
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 34.86
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelEoSStreamProcessor.java 32.23
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 41.75
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.45
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/ParallelStreamProcessor.java 35.49
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelEoSStreamProcessor.java 33.2
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/JStreamParallelStreamProcessor.java 32.29
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 43.74
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.63
parallel-consumer-core/src/main/java/bz/stub/parallelconsumer/internal/ExternalEngine.java 39.96
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/VertxParallelEoSStreamProcessor.java 43.74
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 41.75
parallel-consumer-vertx/src/main/java/bz/stub/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 37.53
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 35.53
parallel-consumer-core/src/test-integration/java/bz/stub/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 31.15
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.21 ⚠️
parallel-consumer-mutiny/src/test/java/bz/stub/parallelconsumer/mutiny/TestConventionsArchTest.java 86.0 ⚠️
parallel-consumer-reactor/src/test/java/bz/stub/parallelconsumer/reactor/TestConventionsArchTest.java 86.0 ⚠️
parallel-consumer-examples/parallel-consumer-example-core/src/test/java/bz/stub/parallelconsumer/examples/core/TestConventionsArchTest.java 83.58 ⚠️
parallel-consumer-examples/parallel-consumer-example-reactor/src/test/java/bz/stub/parallelconsumer/examples/reactor/TestConventionsArchTest.java 83.58 ⚠️
parallel-consumer-examples/parallel-consumer-example-vertx/src/test/java/bz/stub/parallelconsumer/examples/vertx/TestConventionsArchTest.java 83.58 ⚠️
parallel-consumer-examples/parallel-consumer-example-metrics/src/test/java/bz/stub/parallelconsumer/examples/metrics/TestConventionsArchTest.java 82.08 ⚠️
parallel-consumer-examples/parallel-consumer-example-streams/src/test/java/bz/stub/parallelconsumer/examples/streams/TestConventionsArchTest.java 82.08 ⚠️
parallel-consumer-vertx/src/test/java/bz/stub/parallelconsumer/vertx/VertxBatchTest.java

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

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

@github-actions

Copy link
Copy Markdown

🧪🔒 Quarantine Lane Report

Quarantined test Outcome Owner Meaning
PCMetricsTest.metricsRegisterBinding 🟡🎲 passed (flapper) ⚠️ unowned proves nothing - passes most runs by nature
ProducerManagerTest.producedRecordsCantBeInTransactionWithoutItsOffsetDirect 🟡🎲 passed (flapper) #262 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.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown

⚠️ SpotBugs Report

300 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.

@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

…ot parse

A simplify pass over this branch. Behaviour-preserving throughout: the self-test
still reports 25 passed / 0 failed, and the red control is unchanged - restoring
master's bin/ci-mutation-test.sh still flips exactly the five argv arms and
leaves the other twenty green.

bin/test-ci-mutation-test.sh

The new argv arms wrote their own mutations.xml with a double-quoted
status="KILLED". The subject only ever matches the single-quoted form -
grep -oE "status='(KILLED|SURVIVED|TIMED_OUT|NO_COVERAGE)'" and the PARSED sed
both require it - so that report parsed as zero evaluated mutants and every argv
arm was in fact ending on the "scored NOTHING" exit-2 verdict, not the clean run
its own comment claimed ("so the run still reaches a verdict"). It passed anyway,
because these arms judge the recorded argv and never the exit code. That is a
fixture quietly disagreeing with the thing it is a fixture for, which is the same
class of defect this branch exists to fix. They now call write_pit_report, the
helper the other twenty arms already use, at a count that agrees with the stub's
log; the run reaches exit 0. Verified by probe: exit 2 before, exit 0 after.

Extracted commit_edit for the "append a line, add, commit" fixture mutation. It
was written out four times, the fourth added by this branch. The file already
carries record_result for exactly this reason, and says so - "It was written out
three times, and the three copies had already drifted" - so the shape was already
established as one worth collapsing rather than a preference.

Dropped a dead rc=$? in assert_mvn_argv. It was captured and never read, and an
unread captured status cannot be told from a missing assertion by eye. The
comment now states positively that the exit code is deliberately not asserted
here, which is the fact the bare variable was obscuring.

docs/inflight/static-shell-lint-severity-tiers.md

The reproduce snippet disproved its own point. Its probe file had no shebang, so
shellcheck --severity=error reported SC2148 and exited 1 - not the "silent,
exit 0" the line beside it claims. A reader running it would have concluded the
error floor does catch SC2215, which is the opposite of the finding. Added the
shebang, and said why it is load-bearing so it does not get tidied away again.
Also corrected the quoted ShellCheck message, which was cut short mid-sentence
while presented as verbatim.

"A whole-tree class sweep found one other instance of this exact shape: none"
said both things at once. It means none; it now says so, and carries the sweep
command instead of a script count, per the counts rule in docs/inflight/AGENTS.md
("Name the shape and the command that yields the number"). The red-control
evidence lost its 5-and-20 tallies for the same reason and gained the two-step
recipe that reproduces them.

Considered and skipped: consolidating the five argv arms onto one shared fixture
and one subject run. Measured at ~0.3s across the five, on a suite that runs in
about 1.2s, so speed does not carry it - and every other assert helper in the
file builds a fixture per arm, so singling these out would cost more clarity
against the file's own convention than the shared setup would buy.
@astubbs

astubbs commented Aug 26, 2026

Copy link
Copy Markdown
Owner Author

@claude review this

Head is 036100954. This PR fixes a defect in bin/ci-mutation-test.sh: a comment inside the backslash continuation of the ./mvnw invocation truncated the command, so the lane silently ran without -pl parallel-consumer-core -am (mutating every module), without -DexcludedTestClasses, and exited 127 from the orphaned argument — whose tee also clobbered the log the script parses for its verdict.

A simplify pass has since run over it. bin/ci-mutation-test.sh is byte-identical to the original fix; everything in the second commit is test and docs.

Where I would most like you to push back:

  1. Does the fix actually hold, and is the guard against recurrence the right one? The comment is hoisted above the invocation and a KEEP COMMENTS OUT OF THE INVOCATION BELOW warning left in its place. Is there a structural guard that would be better than a comment plus a test — short of the per-code lint list I deliberately rejected (see 3)?

  2. The argv arms are the whole point — do they discriminate? The pre-existing 20 arms all take the PIT_DRY_RUN_LOG branch, so nothing ever exercised the real invocation, which is why this shipped. Five new arms run the real branch against a stub mvnw that records argv. Proven red: restore master's script and exactly those 5 fail while the other 20 pass. Please check the stub seam is honest and that the arms assert the right property. The simplify pass also found my fixture wrote status="KILLED" where the subject only greps status='...', so the arms were silently ending on the exit-2 "scored NOTHING" verdict and passing anyway because they judge argv, not exit code — now routed through the existing write_pit_report. Is that fully fixed, and are there other fixture/subject disagreements of that shape?

  3. Was rejecting the per-code lint promotion right? ShellCheck names this exactly (SC2215) but it is a warning, and bin/check-shell-lint.sh gates at error. I did not add --include=SC2215: the severity register has a deliberate one-knob rule because per-code lists grow, and this repo already removed that shape from SpotBugs. Instead the incident is recorded as the argument for raising the floor, which stays separate work (~10 findings). Tell me if that is the wrong trade.

  4. The docs note (docs/inflight/static-shell-lint-severity-tiers.md) — its reproduce snippet originally had no shebang, so shellcheck --severity=error returned SC2148/exit 1 rather than the "silent, exit 0" printed beside it, i.e. the snippet disproved its own point. Fixed. Please check the note now says only true things, and complies with docs/inflight/AGENTS.md — particularly the counts rule, which I violated in the first draft.

Class sweep already done, no need to repeat: shellcheck --include=SC2215 across bin/, .claude/hooks/ and .github/ matched this one site only.

Verified locally at this head: bin/test-ci-mutation-test.sh 25/25; bin/check-all.sh 15 passed, 0 failed, 0 could not run; red control re-confirmed both before and after the simplify pass.

@claude

claude Bot commented Aug 26, 2026 •

Copy link
Copy Markdown

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


Review complete

  • Confirm HEAD (0361009) matches PR, gather context
  • Read bin/ci-mutation-test.sh diff — verify the fix and the recurrence guard (Q1)
  • Read bin/test-ci-mutation-test.sh diff — verify the 5 new argv arms discriminate correctly, check the status='...'/write_pit_report fix (Q2)
  • Assess the SC2215 severity-promotion trade-off (Q3)
  • Read docs/inflight/static-shell-lint-severity-tiers.md diff for accuracy/compliance (Q4)
  • Attempt to run bin/test-ci-mutation-test.sh / bin/check-all.sh — blocked, see note below
  • Post final review

Tooling note: this session's Bash permission set could not run any script (bin/test-ci-mutation-test.sh, bin/check-all.sh, even shellcheck on a scratch file) — every invocation required interactive approval that wasn't available. Everything below is verified by reading the diff and cross-checking the two scripts against each other statically, not by executing them. If you want the numeric claims (25/0, 15/0, the 5-flip red control) independently re-run, --allowedTools needs to permit bin/*.sh execution for this action.


1. Does the fix hold, and is the guard the right one?

Yes. Confirmed by reading the post-fix invocation (bin/ci-mutation-test.sh:275-291): every #-led explanation is now above ./mvnw, and the continuation itself carries zero comment lines — -pl parallel-consumer-core -am and "$@" are both present and correctly terminate the pipe into tee "$PIT_LOG". That's the whole bug: nothing else needed to change.

On the guard itself — the KEEP COMMENTS OUT OF THE INVOCATION BELOW comment plus the argv arms is reasonable, but it isn't structural: nothing stops a future edit from putting a # back inside the continuation, and the argv arms only catch it if the specific flag that gets dropped happens to be one they assert. A genuinely structural fix would be to build the args as an array first (args=(--batch-mode -Pci ... -pl parallel-consumer-core -am)) and invoke ./mvnw "${args[@]}" "$@" | tee ... — an array literal can carry an inline comment on any element without risk, because there's no backslash-continuation to splice through. That removes the whole defect class rather than fencing it. Worth doing at some point, not blocking — the comment + 5 pinned flags is adequate belt-and-braces for now, especially since SC2215 sweep found no siblings.

2. Do the argv arms discriminate?

Yes, and the fixture bug the simplify pass caught is real and correctly fixed. Traced it directly:

  • bin/ci-mutation-test.sh:353 parses mutants with sed -n "s|.*status='\([A-Z_]*\)'..., and the EVALUATED count at line 454 greps status='(KILLED|SURVIVED|...)' — both require single-quoted attributes.
  • The pre-simplify fixture wrote status="KILLED" (double-quoted) by hand, which those patterns don't match — every argv arm was silently landing on the "scored NOTHING" / exit-2 path, invisible because the arms only assert on recorded argv, never on exit code.
  • Post-simplify, assert_mvn_argv now calls write_pit_report "$tmp" 42 KILLED (bin/test-ci-mutation-test.sh:153-164), the same helper the other 20 arms use, which emits status='%s' — matching the subject's parser. Confirmed the call signature (root count status) lines up with the helper's local root="$1" count="$2" status="${3:-KILLED}".

Counted the suite directly: 24 assert_* call sites + 1 widened_scope_case = 25, matching the claimed "25 passed". The five new argv arms (bin/test-ci-mutation-test.sh:447-459) between them assert -pl, -am, -DexcludedTestClasses=..., -DoutputFormats=XML,HTML, -DtimeoutFactor=3.0 — which is exactly the tail that a truncated continuation drops, so they do discriminate the shape of this bug. Did not find other fixture/subject disagreements of this shape in the rest of the file — the other write paths (assert_verdict, widened_scope_case) already routed through write_pit_report/write_pit_log before this PR.

One minor, non-blocking observation: the herestring rewrite (grep -A1 -xF -- "$want" "$argv" piped into <<< for the second grep -qxF) does fix the SIGPIPE-under-pipefail shape check-shell-sigpipe.sh flags — confirmed the pattern at bin/test-ci-mutation-test.sh:424-427 no longer pipes two greps together.

3. Was rejecting the per-code lint promotion right?

Agree with the call. Confirmed bin/check-shell-lint.sh gates via a single --severity="$SEVERITY" flag (line 59) with no code-level allowlist — so adding --include=SC2215 would be the first exception to a "one knob" design this repo already walked back once for SpotBugs (per the doc's own cross-reference). Recording the incident as evidence for raising the floor tier-wide, rather than carving out one code, keeps the invariant intact and is consistent with how static-spotbugs-rule-registry.md handles the same shape. The behavioral guard (argv arms) covers the gap in the meantime. No pushback here.

4. Does the docs note say only true things now?

The fix is sound: the original repro (printf 'foo --a \\\n...' with no shebang) would trip SC2148 ("Tips depend on target shell and yours is unknown"), which is an error, so shellcheck --severity=error would not have exited 0 as claimed — the snippet contradicted its own point. Adding #!/usr/bin/env bash and explaining why it's load-bearing (so it doesn't get "tidied away" later) fixes that. The commit also swapped the hard-coded "82 scripts, one match" tally for a reproducible sweep command, and rewrote "found one other instance: none" to say directly that none were found — both align with docs/inflight/AGENTS.md's counts rule (name the shape and the command, not a bare figure). I could not re-run shellcheck here to confirm the exact wording of the corrected quoted message ("Bad line break or missing [ .. ]?") verbatim against the real tool output — flagging that as unverified rather than wrong, since the sandbox blocked shellcheck execution entirely.

Overall

The fix is correct and minimal (the mutation-test script diff is exactly "hoist the comment, change nothing else"). The test suite genuinely discriminates the bug it's meant to catch, and the simplify-pass commit fixed a real second-order bug in the fixtures (parseable-status mismatch) rather than just polishing style. The severity-promotion call is well-reasoned and consistent with existing repo precedent. Nothing here blocks merge from my read; the array-based invocation is a "nice to have later" suggestion, not a requested change.

@astubbs
astubbs marked this pull request as ready for review August 26, 2026 12:11
…mpossible rather than discouraged

Review of #371 accepted the fix and then made a
better suggestion: the guard was a comment telling the next person not to
reintroduce the bug, which is a rule somebody has to remember. Building the
arguments as an array removes the mechanism instead.

A `#` inside a backslash continuation is spliced onto the command, so the
shell truncates there and every following line becomes a separate command -
which is how this lane silently lost `-pl parallel-consumer-core -am`,
mutated every module, and exited 127. Inside an ARRAY LITERAL there is no
continuation to splice through, so a comment beside any element is inert.
Verified rather than assumed: a probe array carrying a comment mid-literal
yields all its elements, exit 0, shellcheck clean.

That means the Lincheck exclusion comment can now sit exactly where it
belongs - immediately above the flag it explains - which is where somebody
originally put it and what broke the lane. The explanation and the flag are
back together, and this time that is safe.

This is the same standard applied on #344 an hour earlier: "the two
states cannot coexist" beats "the gate happens to be shut". A warning comment
is the second kind. It is kept, reworded to say why the array form is
load-bearing, so that converting back to a continuation reads as the
regression it would be.

The array's first form tripped SC2054 - shellcheck reading the comma in
`-DoutputFormats=XML,HTML` as an element separator rather than part of a
value. Quoting the element says which it is, to the linter and the reader
both; no suppression was added, since this PR's whole argument is that
per-code exceptions are the thing to avoid.

Also closes the one item the review left unverified: it could not execute
shellcheck in its sandbox, so the note's quoted SC2215 message was flagged
as unchecked. Run here, the tool emits "This flag is used as a command name.
Bad line break or missing [ .. ]?" - verbatim what the note claims.

Verified: bin/test-ci-mutation-test.sh 25 passed 0 failed; bin/check-all.sh
15 passed, 0 failed, 0 could not run; red control re-run against master's
script - 20 pass, exactly the 5 argv arms fail - then restored to 25/25.
@astubbs

astubbs commented Aug 26, 2026

Copy link
Copy Markdown
Owner Author

A genuinely structural fix would be to build the args as an array first ... That removes the whole defect class rather than fencing it. Worth doing at some point, not blocking

Adopted in 7210aed7a rather than deferred — you're right, and I'd applied exactly this standard on #344 an hour earlier ("the two states cannot coexist" beats "the gate happens to be shut"), so leaving a remember-the-rule guard here would have been inconsistent.

Verified rather than assumed: a probe array carrying a comment mid-literal yields every element, exit 0, shellcheck clean. So the Lincheck exclusion comment now sits immediately above the flag it explains — which is where someone originally put it, and what broke the lane. The explanation and the flag are back together, and this time that is safe. The warning comment stays, reworded to say the array form is load-bearing, so converting back to a continuation reads as the regression it would be.

One wrinkle worth recording: the first array form tripped SC2054, shellcheck reading the comma in -DoutputFormats=XML,HTML as an element separator rather than part of a value. I quoted the element rather than adding a # shellcheck disable — this PR's whole argument is that per-code exceptions are what to avoid, so earning the clean result was the consistent move.

I could not re-run shellcheck here to confirm the exact wording ... flagging that as unverified rather than wrong

Now closed. Run locally, the tool emits verbatim:

SC2215 (warning): This flag is used as a command name. Bad line break or missing [ .. ]?

which is exactly what the note quotes.

On the tooling note more generally — this is the second review in a row blocked from executing anything, so its numeric claims went unverified both times. Worth fixing at the action level. Re-run here at 7210aed7a: bin/test-ci-mutation-test.sh 25 passed / 0 failed; bin/check-all.sh 15 passed, 0 failed, 0 could not run; and the red control re-confirmed after the array change — restoring master's script fails exactly the 5 argv arms and passes the other 20, then 25/25 on restore.

Thanks for the array suggestion — it converted this from a fix with a note attached into one where the failure mode no longer exists.

@astubbs
astubbs merged commit 4e23379 into master Aug 26, 2026
31 checks passed
@astubbs
astubbs deleted the ci/pit-lane-line-continuation branch August 26, 2026 12:59
astubbs added a commit that referenced this pull request Aug 26, 2026
…hot, and discharge the seam re-hook it inherited

Takes #371, so this branch now carries the fixed PIT
lane, and #337, which is what made the rest of this
commit necessary.

THE MERGE BROKE SEVEN TESTS, AND THAT IS THE GUARD WORKING. All three
PartitionStateCommitEncodeShift894Test cases and all four
PartitionStateCommitShiftCompounding894Test cases failed at their
fired-assertions, each naming both the cause and the remedy: the encoder no
longer calls getIncompleteOffsetsBelowHighestSucceeded(), which is the exact
seam #337's RacingCommitCycleState overrode to inject its race, so
every armed race landed on a dead seam.

bug-torn-read-family.md predicted this and said whichever of the two landed
second would owe the re-hook. #337 landed first, so this branch did it:
the double now overrides the bounded getIncompleteOffsetsBelow(long), which
catches BOTH entry points because the no-arg convenience method delegates
through it in the base class - the same property this PR established for
RemovedPartitionState, applied to the sibling double.

Worth recording rather than quietly benefiting from: the dossier also said
PartitionStateCommitShiftCompounding894Test armed races with no
fired-assertion and could go silently green on a dead seam. That was true when
written and #337 had fixed it before merging. Had it not, this signal
would have been three failures instead of seven, and the other four would have
passed while proving nothing.

RacingCommitCycleState's javadoc also carried a claim this PR falsifies: that
encodeOffsetsCompressed takes a second read of getOffsetHighestSucceeded()
after the snapshot, so a completion above the high-water mark would widen the
range against a stale set, and that its fixtures never reach that
interleaving. The second read is what this PR removes. The caveat is kept
rather than deleted - a reader of those fixtures still needs to know they
establish the base/payload tear and not the widened-range one - but it now
points at OffsetEncoderWidenedRangeRaceTest, which reproduces the interleaving
it warned about.

One content conflict, in docs/inflight/static-infer-findings.md, resolved
toward master: this branch had wrapped one line in an inner
`post-merge: checked-begin` to satisfy the self-reference gate, and master has
since wrapped the whole surrounding paragraph in an outer block that already
covers it, so the inner marker was a redundant nesting and was dropped.

Verified: core unit suite 426 tests, 0 failures (417 before this merge - the
9 new tests are #337's, and all 7 regressions are cleared);
bin/check-all.sh 15 passed, 0 failed, 0 could not run.
astubbs added a commit that referenced this pull request Aug 26, 2026
Two merges in one: #371's PIT fix, which is why this happened now, and
#335's `Execution` state machine, which conflicted.

THE PIT LANE. `Mutation Tests (PIT, PR-scoped)` was cancelled on this PR after half an hour. It was
not PR-scoped: a comment inside the invocation's line continuation truncated it, so `-pl ... -am`
never reached Maven and the lane walked the whole reactor. Master's fix builds the arguments as an
array, and `bin/test-ci-mutation-test.sh` passes here, including the five argv arms that assert the
scope flags survive.

THE CONFLICT, and it is semantic rather than textual. #335 replaced the
`maybeUserFunctionSucceeded` field with `recordVerdict(false)`, a transition on the `Execution`
held in an `AtomicReference`, and calls it straight after `updateFailureHistory` - deliberately in
that order, because the state write is what publishes the retry deadline. This branch had wrapped
the same call site in `try`/`finally`, so a throw from `updateFailureHistory` could not leave the
container half transitioned.

Resolved by keeping master's structure and this branch's `finally`, because the two do not actually
conflict: `finally` runs after the history write on every path that completes, so the ordering
contract is untouched. It differs only on the throwing path, and there the choice is between
publishing FAILED beside the previous attempt's deadline - one skipped backoff, record still makes
progress - and not publishing at all, which strands the record and blocks its shard for the life of
the process. The stall is strictly worse, and closing it is what this PR is for. The reasoning is
written at the call site so the next reader does not take the `finally` for an oversight and remove
it.

Worth recording that both hazards the `finally`'s original comment named are now closed at source
by this branch's own work: `computeRetryDueAt` catches the overflow and `getRetryDelayConfig` never
throws. The `finally` is kept for the argument it always rested on - not today's known lines, but
every line added above it later.

`WorkClaimStateMachineTest` passes, including the ABA arms #335 added, and the vert.x
comment that cited `maybeUserFunctionSucceeded` by name now cites the verdict instead.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 26, 2026
`ci-mutation-testing.md` measured forty consecutive runs of the PR-scoped PIT lane that scored no
mutants, every skip individually correct. This records what happened the first time it had a
decidable class to mutate, now that #371 has fixed the truncated invocation which was
silently dropping the scope flags: the job hit `timeout-minutes: 30` and was cancelled.

Scoping is not the problem, and the log says so in its own words - it named `OffsetSimultaneousEncoder`
as the PR-scoped target, listed every other changed class as not decidable, and PIT reported one
mutation test unit. One class, exactly as designed.

The cost is the coverage pass. PIT sent 388 test classes to the minion and spent 367 seconds
computing coverage before mutating anything, with a single `RunLengthEncoderTest` template
invocation taking 141786 ms. Mutating that one unit then ran to the timeout without a result. So the
lever is `-DtargetTests` on the test side, not the class side - and that is a different change from
the ranked widening list in the same note, which is about which packages to admit. Widening scope
while the coverage pass costs this much would make the timeout more likely, not less.

Recorded rather than fixed, and it blocks nothing: the job is `continue-on-error: true`, so the cost
is a red row and no mutation signal.

It also qualifies a claim the note already carried - that a scoped run "scores mutants normally",
true of the run that measured it, and not true of this one on CI. Both are observations, the
difference between them is the coverage pass, and neither generalises to the other.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 27, 2026
…r function (#205)

A caller who has established diagnostic context - a trace_id, a request_id, a
tenant - lost all of it the moment a record crossed into the worker pool, and
again crossing into vert.x, Reactor or Mutiny. Confirmed before anything was
written: PC set exactly two MDC keys of its own, `pcId` and `offset`, and
`MDC.getCopyOfContextMap()`/`setContextMap()` appeared nowhere in the tree. So the
logs a user's own function wrote could not be correlated back to the request that
produced them.

`MdcPropagation` carries it across: `capture()` on the thread that HAS the
context, `enter(..)` returning an AutoCloseable scope on the thread that RUNS the
work. Four boundaries - the core worker pool, the vert.x event loop, the Reactor
scheduler and the Mutiny executor - which is the complete set: every
`ExternalEngine` subclass plus core, checked rather than assumed.

The caller's snapshot is taken in `supervisorLoop`, on the thread that calls
`poll*()`. That is the only moment it is reachable: none of PC's threads exist
yet and the SLF4J MDC is not inheritable.

PC'S OWN KEYS WIN A COLLISION. `pcId` and `offset` are applied after the caller's
map at every call site, so a caller key of the same name cannot shadow them - PC's
own log lines are read by those keys, and a caller key shadowing `offset` would
silently corrupt its diagnostics. A test collides on `pcId` deliberately.

ON BY DEFAULT - confirmed by the maintainer at merge prep, not merely proposed -
with `ParallelConsumerOptions.propagateMdc` as the kill switch. The asymmetry
decides it: not propagating fails silently, for everyone, and only
ever gets fixed by someone who reads a changelog; propagating fails visibly, as
one extra key in a log line, and can be switched off. Setting it false restores
the old behaviour exactly - leak included - so it is a true revert rather than
half of one.

The residual risk of a default-on capture is stated rather than buried: a
REQUEST-SCOPED value in the MDC at `poll*()` time is pinned to the consumer for
its life, which is the same actively-misleading-logs failure this change exists
to prevent. Mitigated by logging the captured KEYS - never the values, which are
the user's data - at INFO on startup, so the mistake is discoverable. That INFO
line fires once per instance and structurally so: it is reachable only from
`supervisorLoop`, which refuses a second `poll*()`.

That trade-off - the pinning risk against the discoverability that mitigates it -
is what was put to the maintainer and taken. So the risk on its own is not grounds
to revisit the default; evidence of it actually biting would be.

THE LEAK IS FIXED TOO, AND IT MAY MATTER MORE THAN THE PROPAGATION. Before this,
whatever a user function put into the MDC stayed on the pooled thread for the
next, unrelated, record - so a log line could carry another record's context
entirely. The restore scope ends that.

Cost is measured, not reasoned about: `ThreadMXBean.getThreadAllocatedBytes` over
a million capture/enter/close cycles on logback 1.6.1 shows ZERO bytes for a
caller who never touches the MDC, which is the default, and zero with propagation
disabled. For a caller who does use it, a few hundred bytes per batch against the
collector, two ArrayLists, a PollContextInternal and a FutureTask that
`runUserFunction` already allocates per batch. One caveat recorded with it: the
zero is a property of logback's MDCAdapter returning null for an empty context,
and another SLF4J binding returning an empty map would allocate a small map per
batch. Behaviour is correct either way.

DELIBERATELY NOT COVERED: the operator chains of the Publisher or Uni the user
returns. The context reaches the invocation of their function and PC's terminal
signal handling; following it onto whatever schedulers their own chain hops to
needs Reactor's context-propagation library and is the user's call.

Every test was verified able to fail. The leak test, re-run with propagation
disabled, reports four poison keys carried across records on one pooled thread -
the real pre-existing defect. Each engine test, re-run with `propagateMdc(false)`,
fails on its own "context must be visible" assertion, and was re-verified after
the shared probe was extracted so the refactor could not quietly defuse them. They
also assert WHICH thread observed - Reactor positively against `boundedElastic`,
vert.x and Mutiny as "not a pc- thread" - so they cannot silently stop covering
the second boundary. No existing assertion was weakened.

Merging master in raised one real semantic conflict rather than a textual one.
Master's `fix(reactor) #342` moved `ReactorProcessor` to the
three-argument `Flux.subscribe`, because the two-argument overload has no
completion callback and had `onComplete` - which retires the record - wired as the
ON NEXT consumer: a Publisher emitting several elements retired its record once
per element, and one completing empty retired it never. This change wraps those
same callbacks in an MDC scope. They compose, and both survive: master's
three-argument shape with each TERMINAL callback body inside the scope, the
element consumer deliberately left outside it because it is neither the user's
function nor terminal handling. Each side keeps its own pin and both pass.

Static analysis arrived with that merge and fired on this change's own lines;
all three findings are cleared. `observations()` returns `Queue` rather than
`Collection`, which is what it always was. Two "possibly redundant method call"
findings on `MDC.get` were real as observations and wrong as advice - the scope
under test is what changes the context between the two reads, so caching would
delete the assertion - and are resolved by routing every MDC read through one
`assertMdc(key, expected)` helper rather than by suppression. That helper earns
its place independently: it names the key in the failure message, which the bare
assertion never did.

TWO THINGS RIDE ALONG, and neither is about MDC propagation. Both are
capture-only, both are docs, and both are here because they needed somewhere to
land rather than a PR of their own.

The first is one entry in the confluentinc#857 family ledger - a `ZOMBIE_MEMBER`
chaos capture with its seed, which that file already explains as seed-dependent
rather than branch-dependent, and which is recorded because the log expires and
the seed is the asset. It is numbered twentieth because master took the
intervening ordinals while this was open; that file's own advice is to cite the
seed rather than the ordinal.

A SECOND red on this branch was a different thing entirely - the
BLOCKED-on-monitor discriminator, the poll thread parked acquiring the
`commitCommand` monitor held by its own control thread, which is the live defect
that file's capture series is hunting and whose fix is #29. It was written
up here first and is deliberately NOT in this change: master recorded the same
run independently, with the same seed and the same not-a-control caveat, inside a
pairing analysis this branch's copy could not support. The local entry was
deleted rather than kept beside it, because a fact stated twice drifts apart.

What survives from that is a repair to master's paragraph, which cited this work
by BRANCH name - a reference that stops resolving the moment the branch is
deleted. The self-reference gate only inspects the branch it runs on, so it could
not fire for whoever wrote the line and fired immediately here; it now names the
PR, which is permanent.

The second is `docs/mutation-lane-findings` - two notes recording what the
PR-scoped mutation lane found once #371 fixed it, and a gap in the lane
itself: its survivor table is written only to the job summary, which no API
exposes, so recovering which mutants survived took a local re-run and a
hand-written parser. The second note argues the survivor on #344's own new
code is an EQUIVALENT mutant rather than a missing test - the bound samples
`offsetHighestSucceeded`, and a succeeded offset is by construction absent from
`incompleteOffsets`, so the two comparisons cannot differ while that invariant
holds - and names the gaps that are real instead.

Refs #197, #195, confluentinc#907. Closes neither:
#197 is the release umbrella and this is one item in it, and #195 is
the mirror of an upstream thread about whether the project is maintained, not
about this finding.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant