Skip to content

ci: self-hosted high-CPU fast-feedback workflow + PR-scoped advisory PIT - #75

Merged
astubbs merged 35 commits into
masterfrom
ci/grumpy-runner-workflow
Jul 31, 2026
Merged

astubbs merged 35 commits into
masterfrom
ci/grumpy-runner-workflow

Conversation

@astubbs

@astubbs astubbs commented Jul 29, 2026 •

Copy link
Copy Markdown
Owner

Optional, non-gating fast feedback on a self-hosted many-core Linux runner - far faster than GitHub's 2-core gate for the Testcontainers-heavy suites - plus a couple of related CI/test fixes that landed while building it.

What

  • New pr-highcpu-fast-feedback.yml: matrix of Unit / Integration / Performance / Mutation (PIT, scoped) / Mutation (PIT, full) on runs-on: [self-hosted, highcpu], same-repo guarded (fork PRs never run on the self-hosted box), continue-on-error + not required so an offline runner never blocks a merge (the required gate stays GitHub-hosted, maven.yml). Triggers on pull_request + workflow_dispatch; per-suite concurrency so fast suites don't queue behind Mutation's slow cancel. Tuning (16c/32t box): unit -DforkCount=1C, integration -DforkCount=8 per-broker, mutation -Dthreads=16.
  • PR-scoped advisory Mutation (PIT) on the GitHub-hosted runner (maven.yml): bin/ci-mutation-test.sh now scopes PIT to the core classes changed vs the PR base (wildcarded so nested/synthetic members are covered), fast enough for the hosted gate; advisory / continue-on-error.
  • bin/ci-unit-test.sh forwards extra Maven args (mirrors ci-integration-test.sh) so the self-hosted forkCount cap can be passed - no change for existing callers.
  • Rename pr-mac-fast-feedback.yml → pr-local-fast-feedback.yml: vendor-neutral name + a custom local runner label (was the auto macOS label); stays workflow_dispatch-only while that runner is retired. actionlint.yaml now declares performance / highcpu / local.
  • test(vertx): make failingHttpCall / testVertxFunctionFail deterministic - drive a closed local port (127.0.0.1:1 → "connection refused") instead of a bogus hostname that relied on DNS failing to resolve (false on any network with a local resolver). Both siblings share getBadRequest().
  • Docs: SELF_HOSTED_RUNNER.md, inflight.md, and CHANGELOG.adoc Build & CI entries for the highcpu lane + PR-scoped PIT (README regenerated). Also widens the AGENTS.md changelog policy to record notable build/CI/tooling changes (this is a technical library; its contributors/agents are a primary audience) rather than exclude them as noise.
  • AGENTS.md: add a PR Discipline section (keep PR title/body in sync without churn; duplication-report follow-up; stacked-PR depends on #N) - mirrors the maintainer's global agent rules into the repo so contributors get them.

Security

Public repo + self-hosted runner: the same-repo if: guard keeps fork PRs' untrusted code off the box, backed by the repo setting Settings → Actions → "Require approval for ALL outside collaborators" (the in-file guard alone is editable by a fork PR). Confirmed on.

Note

When the highcpu runner is offline the checks simply pend (never gate). The generic runner infrastructure (LXC via OpenTofu + Ansible, boot control) lives in the homelab repo - not parallel-consumer-specific.

Checklist

  • Changelog entry added (CHANGELOG.adoc, under == Unreleased) - Build & CI entries for the highcpu lane + PR-scoped PIT
  • Docs updated - SELF_HOSTED_RUNNER.md, inflight.md, regenerated README.adoc
  • Tests added/updated - deterministic Vert.x failure tests (failingHttpCall / testVertxFunctionFail)
  • Title & body reflect the final content of this PR
  • Self-hosted runner / security implications considered - same-repo if: guard + "Require approval for ALL outside collaborators"; see the Security section above

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jul 29, 2026 •

Copy link
Copy Markdown

Dependency Review

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

Scanned Files

  • .github/workflows/pr-mac-fast-feedback.yml

@github-actions

github-actions Bot commented Jul 29, 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 33 33 ➖ 0
Duplicated lines 995 995 ➖ 0
Duplication 3.27% 3.27% ➖ 0
Rule Limit Status
Max duplication 5% ✅ Pass (3.27%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

✅ jscpd (language-agnostic)

PR Base Change
Clones 82 82 ➖ 0
Duplicated lines 1175 1175 ➖ 0
Duplication 3.91% 3.91% ➖ 0
Rule Limit Status
Max duplication 5% ✅ Pass (3.91%)
Max increase vs base +0.1% ✅ Pass (+0.00%)

No new clones introduced by this PR.

Powered by astubbs/duplicate-code-cross-check

@github-actions

github-actions Bot commented Jul 29, 2026 •

Copy link
Copy Markdown

📌 Duplicate code detection tool report

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

🔺 Increased similarities

File A File B Base (%) PR (%) Change
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 35.6 35.7 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 35.3 35.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 44.4 44.4 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 31.1 31.2 +0.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 59.5 59.5 +0.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 48.9 49.0 +0.0
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 50.8 50.8 +0.0
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 52.1 52.1 +0.0
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithSaslAuthenticationException.java 50.5 50.6 +0.0
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 38.0 38.0 +0.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 31.3 31.3 +0.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 53.3 53.3 +0.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 30.6 30.6 +0.0
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 30.2 30.2 +0.0
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 47.4 47.4 +0.0
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 61.1 61.1 +0.0
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 44.8 44.8 +0.0
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithCommitTimeoutException.java 55.8 55.8 +0.0
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java 54.8 54.8 +0.0
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 34.6 34.6 +0.0
Full similarity report
parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java

📄 parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java 35.48
parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java 33.62
parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java

📄 parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java 39.63
parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java 35.48
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 53.92 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 41.94
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 38.21
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java 37.11
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 36.18
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 36.16
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 36.16
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 35.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 30.49
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 59.51 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 53.32 ⚠️
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 39.71
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 35.73
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 31.77
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 30.6
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 59.51 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 48.96
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 35.36
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 31.34
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 30.61
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 37.11
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 33.01
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 55.37 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 53.92 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 46.23
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 36.25
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 35.2
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 32.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 32.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java 31.23
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 30.77
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java 33.37
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java 32.26
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 53.32 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 48.96
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 44.44
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 32.86
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 32.69
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java 30.18
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 44.44
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 35.73
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 35.36
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 31.16
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java 34.65
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 33.49
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java 33.49
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 32.86
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java 32.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 31.77
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 30.61
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/RecordContextInternal.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContext.java 34.65
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PollContextInternal.java 32.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/BrokerPollSystem.java 33.57
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 32.69
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java 30.04
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/BrokerPollSystem.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/BrokerPollSystem.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 33.57
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ExternalEngine.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ExternalEngine.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 39.69
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 61.0 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 55.37 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 51.64 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 48.51
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 41.94
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java 38.99
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 38.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 34.87
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 34.87
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/PCRetriableException.java 33.01
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 38.99
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 31.82
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 31.23
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/PCModule.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/PCModule.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/PCModuleTestEnv.java 32.73
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ProducerManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java 33.37
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java 30.04
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 52.64 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 38.61
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 38.61
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 38.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 36.25
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 36.18
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 34.38
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 30.51
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 61.0 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 52.64 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 49.84
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 48.19
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 48.19
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 47.31
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 46.23
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 38.21
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalRuntimeException.java 31.82
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 48.51
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 47.31
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 45.75
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 39.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 39.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 30.77
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 30.51
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 30.49
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 51.64 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 49.84
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 45.75
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 35.36
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 35.2
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 34.38
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 32.96
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 32.96
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java 64.56 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 48.19
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 39.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 38.61
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 36.16
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 34.87
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 32.96
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 32.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV2EncodingNotSupported.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/RunLengthV1EncodingNotSupported.java 64.56 ⚠️
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/EncodingNotSupportedException.java 48.19
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/NoEncodingPossibleException.java 39.43
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/BitSetEncodingNotSupportedException.java 38.61
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ExceptionInUserFunctionException.java 36.16
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/InternalException.java 34.87
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/offsets/OffsetDecodingError.java 32.96
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerException.java 32.1
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java 32.26
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java 31.23
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/WorkManager.java 42.44
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionState.java 31.23
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ProcessingShard.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ProcessingShard.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ShardManager.java 38.84
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ShardManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ShardManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/ProcessingShard.java 38.84
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/WorkManager.java

📄 parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/WorkManager.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/state/PartitionStateManager.java 42.44
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/KafkaSanityTests.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/KafkaSanityTests.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/csid/utils/LoopingResumingIteratorTest.java 33.84
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 55.76 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 47.41
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 38.46
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 43.8
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 40.68
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 38.46
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java 36.95
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/RebalanceEoSDeadlockTest.java 36.95
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 61.14 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 47.41
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 40.68
parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 30.2
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

📄 parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 61.14 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceHighVolumeTest.java 55.76 ⚠️
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/MultiInstanceRebalanceTest.java 43.8
parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java 39.57
parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java

📄 parallel-consumer-core/src/test/java/io/confluent/csid/utils/CollectionUtils.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/csid/utils/JavaUtils.java 39.63
parallel-consumer-core/src/main/java/io/confluent/csid/utils/Java8StreamUtils.java 33.62
parallel-consumer-core/src/test/java/io/confluent/csid/utils/LoopingResumingIteratorTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/csid/utils/LoopingResumingIteratorTest.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/KafkaSanityTests.java 33.84
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/BatchTestBase.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/BatchTestBase.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 30.1
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java 46.13
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java 45.18
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 52.09 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 50.79 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 44.83
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/BatchTestBase.java 30.1
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithCommitTimeoutException.java 55.83 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java 54.82 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithSaslAuthenticationException.java 45.24
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithCommitTimeoutException.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithCommitTimeoutException.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java 70.59 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 55.83 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithSaslAuthenticationException.java 47.61
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithCommitTimeoutException.java 70.59 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 54.82 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithSaslAuthenticationException.java 50.57 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithSaslAuthenticationException.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithSaslAuthenticationException.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithEarlyClose.java 50.57 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTestWithCommitTimeoutException.java 47.61
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/MockConsumerTest.java 45.24
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java 34.99
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessorTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/ParallelEoSSStreamProcessorRebalancedTest.java 34.99
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java 46.13
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java 34.34
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineRegistryScriptTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CheckQuarantineOwnersScriptTest.java 45.18
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/QuarantineLaneReportScriptTest.java 34.34
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java 90.55 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java 89.89 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java 89.89 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ExceptionConstructorsTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ExceptionConstructorsTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/InternalRuntimeExceptionTest.java 30.93
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/InternalRuntimeExceptionTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/InternalRuntimeExceptionTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/ExceptionConstructorsTest.java 30.93
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/PCModuleTestEnv.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/PCModuleTestEnv.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/PCModule.java 32.73
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/internal/TestParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelEoSStreamProcessor.java 30.18
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java 40.39
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureUnitTest.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/offsets/OffsetEncodingBackPressureTest.java 40.39
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/CommitHistorySubject.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/CommitHistorySubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/LongPollingMockConsumerSubject.java 36.51
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/LongPollingMockConsumerSubject.java

📄 parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/LongPollingMockConsumerSubject.java

File Similarity (%)
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/truth/CommitHistorySubject.java 36.51
parallel-consumer-mutiny/src/main/java/io/confluent/parallelconsumer/mutiny/MutinyProcessor.java

📄 parallel-consumer-mutiny/src/main/java/io/confluent/parallelconsumer/mutiny/MutinyProcessor.java

File Similarity (%)
parallel-consumer-reactor/src/main/java/io/confluent/parallelconsumer/reactor/ReactorProcessor.java 53.51 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 79.15 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 50.79 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 49.52
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyPCTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyPCTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorPCTest.java 69.82 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorTest.java 34.23
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyUnitTestBase.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyUnitTestBase.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorUnitTestBase.java 33.31
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java

📄 parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java 91.37 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java 90.7 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java 89.89 ⚠️
parallel-consumer-reactor/src/main/java/io/confluent/parallelconsumer/reactor/ReactorProcessor.java

📄 parallel-consumer-reactor/src/main/java/io/confluent/parallelconsumer/reactor/ReactorProcessor.java

File Similarity (%)
parallel-consumer-mutiny/src/main/java/io/confluent/parallelconsumer/mutiny/MutinyProcessor.java 53.51 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 79.15 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 52.09 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java 50.78 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorPCTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorPCTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyPCTest.java 69.82 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyTest.java 34.23
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorUnitTestBase.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorUnitTestBase.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyUnitTestBase.java 33.31
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java

📄 parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java 91.37 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java 90.7 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java 89.89 ⚠️
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 41.09
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 39.71
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 38.88
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 34.64
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelStreamProcessor.java 31.34
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 38.88
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 38.03
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelStreamProcessor.java 31.16
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/JStreamParallelEoSStreamProcessor.java 30.6
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java 41.58
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 41.09
parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/ExternalEngine.java 39.69
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java

📄 parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelStreamProcessor.java

File Similarity (%)
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/VertxParallelEoSStreamProcessor.java 41.58
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelStreamProcessor.java 38.03
parallel-consumer-vertx/src/main/java/io/confluent/parallelconsumer/vertx/JStreamVertxParallelEoSStreamProcessor.java 34.64
parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

📄 parallel-consumer-vertx/src/test-integration/java/io/confluent/parallelconsumer/vertx/integrationTests/VertxConcurrencyIT.java

File Similarity (%)
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/VeryLargeMessageVolumeTest.java 39.57
parallel-consumer-core/src/test-integration/java/io/confluent/parallelconsumer/integrationTests/TransactionAndCommitModeTest.java 30.2
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java

📄 parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/TestConventionsArchTest.java

File Similarity (%)
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/TestConventionsArchTest.java 91.37 ⚠️
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/TestConventionsArchTest.java 91.37 ⚠️
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/TestConventionsArchTest.java 90.55 ⚠️
parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java

📄 parallel-consumer-vertx/src/test/java/io/confluent/parallelconsumer/vertx/VertxBatchTest.java

File Similarity (%)
parallel-consumer-reactor/src/test/java/io/confluent/parallelconsumer/reactor/ReactorBatchTest.java 50.78 ⚠️
parallel-consumer-mutiny/src/test/java/io/confluent/parallelconsumer/mutiny/MutinyBatchTest.java 49.52
parallel-consumer-core/src/test/java/io/confluent/parallelconsumer/CoreBatchTest.java 44.83

@github-actions

github-actions Bot commented Jul 29, 2026 •

Copy link
Copy Markdown

✅ SpotBugs Report

No bugs found (new bugs only — baseline from base branch excluded).

@github-actions

Copy link
Copy Markdown

❌ Mutation Testing (PIT) Report

PIT did not produce a report. Most commonly this means a test failed in the baseline (PIT runs all tests unmodified first to establish green) and PIT aborted before mutating. See the "Run PIT mutation testing" step logs for the failing test, then either fix it or add it to -DexcludedTestClasses in the workflow.

@codecov-commenter

codecov-commenter commented Jul 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.64%. Comparing base (81aad6e) to head (54865e9).
⚠️ Report is 1 commits behind head on master.

❗ There is a different number of reports uploaded between BASE (81aad6e) and HEAD (54865e9). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (81aad6e) HEAD (54865e9)
default 1 0
Additional details and impacted files
@@             Coverage Diff              @@
##             master      #75      +/-   ##
============================================
- Coverage     78.03%   68.64%   -9.40%     
- Complexity       55      851     +796     
============================================
  Files            81       76       -5     
  Lines          4039     3789     -250     
  Branches        372      366       -6     
============================================
- Hits           3152     2601     -551     
- Misses          712      993     +281     
- Partials        175      195      +20     
Flag Coverage Δ
default ?
integration 68.64% <ø> (?)

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

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…same-repo only)

Optional, non-gating fast feedback that runs unit, integration and performance as parallel
matrix jobs on a self-hosted many-core runner (label `highcpu`), guarded to same-repo PRs so
fork code never executes on it. The GitHub-hosted gate in maven.yml stays the required check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
@astubbs
astubbs force-pushed the ci/grumpy-runner-workflow branch from be55515 to d24c8c1 Compare July 29, 2026 04:55
@astubbs astubbs changed the title ci: optional grumpy self-hosted fast-feedback workflow (non-gating) ci: optional highcpu self-hosted fast-feedback workflow (non-gating) Jul 29, 2026
astubbs and others added 7 commits July 29, 2026 17:00
…rkflow

# Conflicts:
#	.github/actionlint.yaml
…-only

The high-CPU self-hosted matrix now runs unit + integration + performance + mutation as parallel
jobs (a strict superset of the mac runner, which is offline indefinitely). The mac workflow is
switched to workflow_dispatch-only so it stops queuing dead jobs on every PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
failingHttpCall drove an HTTP call at a dotless bogus hostname ("xxxxxxxxx") and asserted the failure
was a DNS *resolution* error ("failed resolve"). That only holds where the name fails to resolve - on any
network with a local resolver + search domain (e.g. a Pi-hole LAN) the name resolves and the failure mode
becomes "connection refused", so the test fails there while passing on GitHub's public DNS.

Point the bad request at a closed local port (127.0.0.1:1) instead: an immediate, deterministic
"connection refused" on every environment, no DNS lookup at all (and faster than one). Keep the real
failed==true check; assert the deterministic "connection refused" message. Found bringing up the
self-hosted high-CPU runner.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…with failingHttpCall)

The failingHttpCall fix (127.0.0.1:1 -> connection refused) also flipped this sibling test through the shared getBadRequest() helper, so its assertion is updated to match. Caught by ce-review.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
Load was ~18/32 with 34GB free - the box is I/O-bound (cold cache), not CPU-bound - so use all the cores.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…ateCommittedOffsetIT

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…epo guard (ce-review P2)

The if: guard lives in the PR-head file, so the real RCE backstop is the repo Actions setting "require approval for all outside collaborators". Documented in the workflow header + referenced SELF_HOSTED_RUNNER.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
@astubbs
astubbs force-pushed the ci/grumpy-runner-workflow branch from 5ec35d4 to 5cc2e87 Compare July 29, 2026 08:09
astubbs added 8 commits July 29, 2026 20:46
Unit forkCount 1C->2C, Integration 8->16 (probe the oversubscription ceiling). Mutation PIT threads 2->16 (CPU-bound, stays in the matrix). Performance split into its own job that needs the matrix, so the throughput benchmark measures on a quiet box (solo 1m54 vs 7m18 when it shares the box).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…formance

Doubling was flat (unit 2C=1C) to worse (integration 16 slower than 8), so back to the knee. Performance returns to the concurrent matrix - it is a correctness gate here; noisy timing is fine and isolation wrecked total wall-clock (it queued behind a 17-min mutation). Mutation keeps threads=16. Accurate benchmarking -> separate on-demand run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
Unit/Integration now also enable JUnit method-parallelism (-Dparallel-tests=true) on top of forking, forks reduced so forks x threads ~= cores - tests whether thread-parallelism is still flaky after recent fixes (revert to fork-only if red). ci-mutation-test.sh: on a PR (GITHUB_BASE_REF) mutate ONLY changed core classes, skip if none - the full internal.* sweep has never completed. Full sweep still runs for push/nightly (no base ref).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…eads finding

fork×threads (parallel-tests=true) was safe (threading no longer races - unit green; integration red was the known flaky PartitionStateCommittedOffsetIT) but no faster than fork-only, so back to 1C/8. PIT: grep no-match under set -euo pipefail made the changed-class skip exit non-zero (0m19 red); wrap grep with || true so it exits 0. Recorded the thread-parallelism-vs-forking finding in inflight next to the shelved Step-2 question.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…bserve a green board

TEMPORARY - not a fix. Disables the known-flaky PartitionStateCommittedOffsetIT.committedOffsetRemoved (awaitility timeout, in inflight, fails on GitHub-hosted too) purely to see a fully-green highcpu run. Revert and harden the test properly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
Now that ci-mutation-test.sh scopes PIT to changed classes on PRs (GITHUB_BASE_REF), it is fast enough for the 2-core hosted runner - so mutation runs on GitHub-hosted as well, not just the self-hosted box. Non-gating (continue-on-error). fetch-depth: 0 so the changed-class diff resolves.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
…already passed

Each GitHub-hosted test job, before running its slow 2-core suite, polls whether the self-hosted highcpu equivalent for the same commit already PASSED (ci-concede-check.sh). If so it skips and goes green; the hosted job stays the required gate but finishes faster when grumpy wins. Never depends on the self-hosted runner: offline/queued/slow/failed -> run the tests normally. Bounded wait, continue-on-error so a check bug can never fail the gate. Caveat documented: conceding trusts the self-hosted env (env-specific failures could be missed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
… the green-board experiment)

Reverts the temporary experiment disable. The test is still the known flaky awaitility timeout (tracked in inflight) - harden it (adaptive await / underlying timing) rather than leave it disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
astubbs and others added 2 commits July 29, 2026 23:43
The check name is "<workflow> / <job>", and both halves carried "High-CPU"
plus verbose filler ("Build & Test - ...", "self-hosted, optional"), pushing
past the PR merge-box truncation width.

- workflow name: "PR High-CPU Fast Feedback" -> "highcpu"
- job name: "Build & Test - <suite> (high-CPU self-hosted, optional)"
           -> "<suite> (optional)"  (keeps the non-gating signal)

Result: "highcpu / Unit (optional)", "highcpu / Integration (optional)", etc.
- longest ~35 chars, well under the cutoff.

Kept the concede matcher in sync (it resolves the highcpu run/jobs by name):
bin/ci-concede-check.sh WORKFLOW default -> "highcpu", JOB_PREFIX -> "${SUITE}"
(the job is now named "<suite> (optional)", so a suite-name prefix still
uniquely matches). Added a keep-in-sync comment on the job. Updated the
SELF_HOSTED_RUNNER.md reference.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ytagqk6daL4uTtbebQNNv
… behind Mutation's slow cancel

A single workflow-level concurrency group meant every new push's jobs waited
for the ENTIRE previous run to complete before starting. cancel-in-progress
signalled the old run immediately, but its Mutation (PIT) maven/JVM tree
rides out the runner's full cancellation grace (~5 min) before force-kill -
observed on PR #80: push at 22:41:05, old Mutation force-killed 22:46:06,
all four new jobs started 22:46:09. Head-of-line blocking on the one job
nobody needs fast feedback from.

Job-level per-suite groups (highcpu-<suite>-<branch>) mean a new push
supersedes each suite independently: Unit/Integration/Performance
predecessors are finished or die fast, so they start within seconds; only
Mutation queues behind old Mutation, which is fine for a 30-minute advisory
job. No change to runner usage. actionlint clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VbtaCN1Re14pJ99VFW4R18
@astubbs astubbs added the 0.6.0.0 Targeted at the 0.6.0.0 release label Jul 29, 2026
…ner' in comments

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VbtaCN1Re14pJ99VFW4R18
Comment thread bin/ci-mutation-test.sh Outdated
Comment thread bin/ci-mutation-test.sh Outdated
Comment thread bin/ci-mutation-test.sh
Comment thread bin/ci-mutation-test.sh
astubbs and others added 2 commits July 31, 2026 13:49
…(review)

Two findings from the automatic review on #75:
- git diff now uses --diff-filter=d so a PR whose only core change is a class DELETION does not name a non-existent class in targetClasses (pitest failWhenNoMutations=true would fail the goal instead of the intended nothing-to-mutate skip).
- emit Foo,Foo$* per class instead of Foo*: PIT globs * as unbounded .*, so Foo* over-matched siblings (PartitionState* -> PartitionStateManager), mis-attributing mutants. Foo,Foo$* = the class + its nested/synthetic members only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e (review)

Review finding: with set -euo pipefail, if the base-ref fetch fails or the ref is absent on a shallow checkout (e.g. the highcpu Mutation job, which has no fetch-depth:0), the git diff would hard-crash with exit 128 instead of the intended skip/full-sweep. Guard the PR-scoping on git rev-parse verifying origin/BASE_REF resolves; otherwise fall back to the full internal.* sweep.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@astubbs

astubbs commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

Thanks - worked through all four inline findings on bin/ci-mutation-test.sh:

  1. Deleted classes fail the advisory PIT job - fixed (8d5a6d26): git diff now uses --diff-filter=d, so a delete-only PR no longer names a non-existent class.
  2. Trailing * over-matches siblings - fixed (8d5a6d26): emits Foo,Foo$* (class + nested only) instead of Foo*, so PartitionState* no longer sweeps in PartitionStateManager.
  3. Failed git fetch hard-crashes under set -euo pipefail - fixed (f57d31f6): the PR-scoping is now guarded on git rev-parse --verify origin/$BASE_REF; an unresolvable ref falls back to the full internal.* sweep instead of exiting 128.
  4. highcpu Mutation job is silently PR-scoped too (GITHUB_BASE_REF set on self-hosted pull_request runs) - needs a product decision, not yet changed. Either (a) highcpu should do the full sweep on PRs (add fetch-depth: 0 to its checkout + clear GITHUB_BASE_REF for that job) - its differentiated value vs the hosted scoped job; or (b) PR-scoped-everywhere is intended and the changelog/README/workflow comment should say so. Flagging to the maintainer to choose before I touch it.

(#1/#2 = one commit; #3 = one commit. #4 pending the above.)

@claude

claude Bot commented Jul 31, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

Resolve the finding that highcpu Mutation was silently PR-scoped (GITHUB_BASE_REF is set on self-hosted pull_request runs too), contradicting the full-sweep docs. Rather than pick one, run both experimentally: split the matrix Mutation entry into Mutation (PIT, scoped) and Mutation (PIT, full). The full one sets PIT_FULL_SWEEP=true, a new explicit override in ci-mutation-test.sh that ignores the PR base ref and mutates all of internal.*. Also add fetch-depth: 0 to the highcpu checkout (repo is tiny) so the scoped job reliably resolves the PR base ref. Docs updated to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Jul 31, 2026 •

Copy link
Copy Markdown

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


Code review — PR #75

Todo list:

  • Gather context (PR body, comments, review threads, changed files)
  • Understand the request — repo custom instructions call for a code review
  • Review the current diff (the code-review:code-review skill errored when invoked, so this is a manual pass over the 12 changed files)
  • Post findings

Note: invoking the code-review:code-review skill directly failed in this environment, so I read through the changed files myself instead (git log/git diff/Read).

Where things stand

All four findings from the previous automated review round on bin/ci-mutation-test.sh are fixed and hold up on inspection:

  1. Deleted classes crashing PIT — git diff --diff-filter=d now drops deletions before naming target classes (bin/ci-mutation-test.sh:53). Correct.
  2. Wildcard over-matching siblings — emits Foo,Foo$* (class + nested only) instead of Foo* (bin/ci-mutation-test.sh:55). Correct, matches PIT's unbounded * glob semantics described in the comment.
  3. Unresolvable base ref hard-crashing under set -euo pipefail — now guarded with git rev-parse --verify -q "origin/${BASE_REF}^{commit}" before diffing, falling back to the full sweep with a clear log line (bin/ci-mutation-test.sh:46-64). Correct.
  4. highcpu Mutation job silently PR-scoped, contradicting the full-sweep docs — resolved by splitting the matrix entry into Mutation (PIT, scoped) and Mutation (PIT, full), the latter setting PIT_FULL_SWEEP=true which forces BASE_REF="" before any fetch/diff happens (bin/ci-mutation-test.sh:35-37, pr-highcpu-fast-feedback.yml:75-83). The job's checkout also now uses fetch-depth: 0 so the scoped entry reliably resolves the PR base on the self-hosted box. CHANGELOG/README wording updated to match. Consistent and correct.

I re-checked the wiring end to end:

  • maven.yml's hosted mutation job never sets PIT_FULL_SWEEP, so it stays PR-scoped as intended, and its fetch-depth: 0 checkout matches what the script needs.
  • The two highcpu mutation matrix entries get independent concurrency groups (keyed on matrix.suite-name, which now differs), so scoped/full runs won't cancel each other.
  • matrix.full-sweep is only set on the "full" entry; on the other three suites ${{ matrix.full-sweep }} interpolates to empty, which the script's [ "${PIT_FULL_SWEEP:-}" = "true" ] check treats correctly as "not full sweep."
  • VertxTest.java's DNS→closed-port determinism fix is sound and both affected tests (failingHttpCall, testVertxFunctionFail) now assert on getBadRequest()'s deterministic "connection refused"/"Connection refused" message.
  • ci-unit-test.sh's arg-forwarding change is a straightforward mirror of ci-integration-test.sh and doesn't change behavior for existing callers.
  • actionlint.yaml additions (performance/highcpu/local) match the runner labels actually used across the three self-hosted workflows.

No new issues found in this pass. One thing worth the maintainer's awareness rather than a blocking finding: the new "Mutation (PIT, full)" job runs the sweep the script's own comment describes as "impractically slow (it has never completed on CI)" under a 60-minute job timeout — that's clearly intentional/experimental per the commit message ("run scoped AND full mutation jobs side by side... see how they compare on cost/signal"), so it's flagged here only as a note, not a defect.

@astubbs

astubbs commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

Finding #4 resolved (810c0de5): rather than pick scoped-vs-full for the highcpu Mutation job, it now runs both side by side - Mutation (PIT, scoped) and Mutation (PIT, full) (the full one sets PIT_FULL_SWEEP=true, a new explicit override that ignores the PR base ref). Added fetch-depth: 0 to the highcpu checkout so the scoped job reliably resolves the base ref (repo is tiny). Docs updated. Well see how the two compare on cost/signal.

Comment thread .github/workflows/pr-highcpu-fast-feedback.yml Outdated
astubbs and others added 2 commits July 31, 2026 14:05
…a no-op) (review)

Review finding: the pom pins <forkCount>${surefire.forkCount}</forkCount>, so surefire only honours -Dsurefire.forkCount; a bare -DforkCount is silently ignored (harmless today since the ci profile already sets surefire.forkCount=1C, but the documented cap mechanism did not actually work). Use the namespaced property on the highcpu Unit line and correct the ci-unit-test.sh usage note. (Integration/failsafe is unaffected - it has no forkCount in the pom, so it reads the bare property.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolve AGENTS.md (combine all four PR Discipline bullets - #75s three + #95s
use-the-template rule), CHANGELOG.adoc (keep #75s renamed local line + highcpu/PIT
entries alongside #95s PR-checklist entry; drop the stale macOS line the rename
supersedes), and README.adoc (regenerated from the resolved CHANGELOG). Brings in
#92/#95/#96 (copyright-in-mvn, PR checklist gate, track_progress) and dep bumps.
@claude

claude Bot commented Jul 31, 2026 •

Copy link
Copy Markdown

Claude finished @astubbs's task in 1m 37s —— View job


Claude finished @astubbs's task —— View job

Todo list:

  • Gather context (PR body, comments, review threads, changed files)
  • Understand the request — repo custom instructions call for a code review
  • Review the current diff (code-review:code-review skill errored again in this environment, so this is a manual pass over git diff origin/master...HEAD)
  • Post findings

Code review — PR #75 (latest push: 9880ed9, 810c0de, merge 5e8477a)

I re-read the full diff against origin/master (324/48 across 12 files, matching the PR stats) with a focus on the two commits pushed since the last review round.

All four previously-flagged findings on bin/ci-mutation-test.sh hold up correctly:

  1. Deleted classes — --diff-filter=d drops deletions before naming targets.
  2. Wildcard over-match — emits Foo,Foo$* (class + nested only), not Foo*.
  3. Unresolvable base ref — guarded with git rev-parse --verify -q "origin/${BASE_REF}^{commit}", falls back to full sweep instead of crashing under set -euo pipefail.
  4. highcpu silently PR-scoped — resolved by splitting into Mutation (PIT, scoped) and Mutation (PIT, full) matrix entries; the full entry sets PIT_FULL_SWEEP=true, which forces BASE_REF="" before any fetch/diff runs (bin/ci-mutation-test.sh:32-33). Independent concurrency groups per matrix.suite-name mean the two don't cancel each other. fetch-depth: 0 was also added to the highcpu checkout so the scoped entry reliably resolves the base ref from what would otherwise be a shallow clone.

And the new commit fixes a real bug cleanly: -Dsurefire.forkCount=1C (was bare -DforkCount=1C) in pr-highcpu-fast-feedback.yml's Unit matrix entry — the root pom.xml hardcodes <forkCount>${surefire.forkCount}</forkCount>, so an un-namespaced -DforkCount was silently read by nothing. Fixed at .github/workflows/pr-highcpu-fast-feedback.yml (Unit cmd:), with an inline comment now explaining why, and bin/ci-unit-test.sh's new usage comment updated to match. Confirmed the Integration line (-DforkCount=8 -DreuseForks=true) is correctly not touched — failsafe has no <forkCount> override in the POM, so the bare property works there.

Cross-checked the rest of the wiring, no new issues:

  • maven.yml's hosted mutation job never sets PIT_FULL_SWEEP, stays PR-scoped, and has its own fetch-depth: 0.
  • VertxTest.java's DNS→closed-port determinism fix reads correctly; both failingHttpCall and testVertxFunctionFail now assert on the deterministic "connection refused" message via the shared getBadRequest().
  • actionlint.yaml's highcpu/local labels match what the two self-hosted workflows actually declare in runs-on:.
  • CHANGELOG/README/AGENTS.md/docs updates are internally consistent with the shipped behavior (no stale "full sweep only on self-hosted" claims left after the scoped/full split).
  • docs/inflight.md's new "Parked: hardened concede optimizer" section accurately documents why it was removed, matching the earlier ce-review thread.

One pre-existing cosmetic nit, not worth a commit: in bin/ci-mutation-test.sh, the else branch's log line ("no resolvable base ref - full internal.* sweep") also fires when PIT_FULL_SWEEP=true deliberately forced BASE_REF="" — the message reads as if resolution failed even when a full sweep was explicitly requested. Harmless (log-only), so leaving as-is unless you want it split into two distinct messages.

No blocking issues found. CI is still in progress (highcpu, CI, Quarantine Lane running) but nothing has failed yet.

@astubbs

astubbs commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

5th finding (Unit -DforkCount=1C silent no-op) fixed in 9880ed9d: the highcpu Unit line now uses -Dsurefire.forkCount=1C (the pom pins <forkCount>${surefire.forkCount}</forkCount>, so surefire ignores the bare property), and the ci-unit-test.sh usage note is corrected. Also merged master back in (picks up #92/#95/#96); resolved the AGENTS.md/CHANGELOG overlap with the merged #95 by combining both sides.

astubbs added a commit that referenced this pull request Jul 31, 2026
…- merge-train prep (#83 lands after #75)

Conflict resolutions (unions of both sides):
- actionlint.yaml runner labels: performance, macOS, highcpu, local
- bin/ci-unit-test.sh: keep this branch chaos-inclusive exclusion list
  (performance,chaos,quarantined - quarantine contract) + PR #75 argument
  passthrough ("$@")

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ALhTf1TRA2S6Ue5rkiQdK
astubbs added a commit that referenced this pull request Jul 31, 2026
Reply to a review comment in its own thread and mark it resolved when addressed, rather than a top-level PR comment (which leaves the conversation unresolved and blocks merge). Recording the rule that surfaced while handling PR #75 review feedback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@astubbs
astubbs merged commit 4c70d3f into master Jul 31, 2026
38 of 39 checks passed
@astubbs
astubbs deleted the ci/grumpy-runner-workflow branch July 31, 2026 02:31
astubbs added a commit that referenced this pull request Jul 31, 2026
The gate only failed on unchecked boxes that were present, so a human PR that dropped the template entirely (e.g. gh --body-file) had zero boxes and passed vacuously - the exact bypass PR #75 slipped through.

Now: real bot authors (GitHub user type Bot, e.g. Dependabot/Renovate) are exempt; every other PR must include the checklist (>=1 task-list item) and resolve each box ([x] or N/A - <reason>). A human PR with no checklist fails with a message pointing at PULL_REQUEST_TEMPLATE.md.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Jul 31, 2026
…hecklist gate (#97)

Resolutions: newer #97 checklist wording in CHANGELOG/README/AGENTS (keeping
this branch's in-thread review-response policy bullet alongside); ci scripts
keep the chaos-inclusive exclusion list per the quarantine contract test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ALhTf1TRA2S6Ue5rkiQdK
astubbs added a commit that referenced this pull request Aug 4, 2026
…double copyright headers; ledger cleanup

- Remove the concede optimizer that rode in via the pre-session ci/grumpy-runner-workflow
  merge: maven.yml restored to master (byte-identical), bin/ci-concede-check.sh deleted.
  It was removed from PR #75 by a 10-reviewer ce-review as a P0 gate-spoof (a PR could add
  a workflow named "highcpu" with a trivially-passing job and make the REQUIRED gate skip
  real tests) - inflight.md documents why it stays discarded. It should never have been in
  this PR.
- Collapse the doubled Confluent copyright header (a maven-license-plugin confluentinc#888 artifact) in
  the three files that carry it: BrokerIntegrationTest, KafkaClientUtils (both touched by
  this PR) and RetriesTest. Checker still 0 violations across 232 files.
- Ledger: delete the #98 entry (self-marked, #98 merged as 6d39081); shrink #80s own
  now-solved committedOffsetRemoved/drain narrative to a pointer + residual open tracking.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018igSVt74wPQAbRNHkXS4R8
astubbs added a commit that referenced this pull request Aug 4, 2026
… partitions (confluentinc#857 family) (#80)

One flaky CI check (PartitionStateCommittedOffsetIT.committedOffsetRemoved[latest])
concealed two independent bugs - one real product defect in the close path, one
test-harness race. Both are fixed here, each proven RED->GREEN against its captured
defect.

Bug 1 (product): a draining consumer busy-spins and zombie-holds its partitions.
ConsumerManager.shutdownRequested was a private shadow of BrokerPollSystem.runState,
raised at drain() time, so poll()'s guard short-circuited and consumer.poll() was
never invoked during the drain window. The poll loop busy-spun (~10k iterations/s, a
full core per closing instance), and - because rebalance participation lives inside
poll() - the draining consumer became a rebalance-unresponsive zombie: heartbeats kept
it a live group member holding its whole assignment (up to max.poll.interval.ms) while
consuming nothing, starving same-group siblings.
Fix: collapse the duplicated lifecycle state - the flag and signalStop() are deleted;
ConsumerManager derives "close in progress" from runState (now volatile) via an injected
signal. One source of truth, so the desync class is structurally impossible. Drain
semantics preserved: the member keeps its partitions to finish in-flight work and commit,
but now stays rebalance-responsive.
Guards: BrokerPollSystemDrainTest (unit; characterisation flipped RED->GREEN) and
DrainingMemberRebalanceIT (integration).

Bug 2 (test harness): the auto.offset.reset=latest nudge race. A LATEST-reset consumer
with no committed offset resolves its start position when the reset executes;
runPcUntilOffset produced its single nudge before the await, so under contention the reset
resolved after the nudge and positioned the consumer past every record that would ever
exist - the await was unwinnable at any timeout (only the [latest] param ever failed).
Fix: shared BrokerIntegrationTest#awaitWithTopicNudge produces a nudge inside each await
attempt and self-diagnoses on timeout; both helpers delegate to it - no timeout enlarged,
no assertion weakened. LatestResetTailNudgeIT bottles the race deterministically.

Also:
- Re-enable the two quarantined tests this PR owns
  (ChaosChurnStormIT.churnStormMeetsSlosAndBalancesLedger,
  PartitionStateCommittedOffsetIT.committedOffsetRemoved): their fixes are this PR, so the
  @Quarantined annotations and docs/QUARANTINED_TESTS.md entries are removed.
- Add DEBUG-gated, behaviour-preserving diagnostics (ShardManager under-served detector,
  WorkManager throttle-decision log, per-PC myId log attribution, logback test config).
- Docs: research write-ups under docs/solutions/test-flakiness/, a plan under docs/plans/,
  a CHANGELOG entry for the operator-visible drain fix, and inflight-ledger upkeep.
- Repo hygiene: remove a stale CI "concede" mechanism that rode in via an old branch merge
  (previously rejected from #75 as a required-gate spoof; maven.yml is back to master's
  version); collapse three doubled copyright headers; prune closed docs/inflight.md entries.

Relates to upstream confluentinc#857 (paused consumption after rebalance).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
astubbs added a commit that referenced this pull request Aug 4, 2026
The stacked-PR gap is closed: an "All branches: PR dependency gate" ruleset
(~ALL, requiring only "Check PR Dependencies") now covers PRs whose base is a
feature branch, which the master-only ruleset never matched. Verified live on
#112.

The concede optimizer is abandoned, not parked - it was removed from #75 by
review, re-introduced and dropped again on #80, and highcpu stays purely
advisory. A five-point revival checklist for something nobody intends to revive
is the "keep it in case" habit this file is meant to resist; the findings survive
in #75's and #80's review history if it ever comes back.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@astubbs astubbs added this to the 0.6.0.0 milestone Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.6.0.0 Targeted at the 0.6.0.0 release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants