Skip to content

KAFKA-20169: Add ducktape test code for Streams Rebalance Protocol.#22561

Open
chickenchickenlove wants to merge 2 commits into
apache:trunkfrom
chickenchickenlove:KAFKA-20169-DUCK
Open

KAFKA-20169: Add ducktape test code for Streams Rebalance Protocol.#22561
chickenchickenlove wants to merge 2 commits into
apache:trunkfrom
chickenchickenlove:KAFKA-20169-DUCK

Conversation

@chickenchickenlove

Copy link
Copy Markdown
Contributor

Summary

This PR is based on the KAFKA-20169-CLIENT-CORE branch. (#22559)
It adds a new ducktape system test to verify that Static Membership works correctly with the Streams rebalance protocol.

The new test covers the following behavior:

  • A bounced static Streams member reuses its persisted processId after restart.
  • Surviving static members are not forced into reconciliation when another static member temporarily bounces and rejoins.
  • The test runs with the Streams group protocol and repeatedly bounces each static member to validate stable behavior across restarts.

Changes

  • Added StaticMemberPersistentProcessIdTestClient, a Streams test client with a persistent state store so the Streams processId is written to disk and reused after restart.
  • Added a corresponding StaticMemberPersistentProcessIdTestService for ducktape.
  • Added a new ducktape test: StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation

Test Results

[INFO:2026-06-12 20:00:12,560]: Discovered 1 tests to run
[INFO:2026-06-12 20:00:12,561]: starting test run with session id 2026-06-12--005...
[INFO:2026-06-12 20:00:12,561]: running 1 tests...
[INFO:2026-06-12 20:00:12,561]: Triggering test 1 of 1...
[INFO:2026-06-12 20:00:12,566]: RunnerClient: Loading test {'directory': '/opt/kafka-dev/tests/kafkatest/tests/streams', 'file_name': 'streams_static_membership_streams_protocol_test.py', 'cls_name': 'StreamsStaticMembershipStreamsProtocolTest', 'method_name': 'test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation', 'injected_args': {'metadata_quorum': 'ISOLATED_KRAFT'}}
[INFO:2026-06-12 20:00:12,568]: RunnerClient: kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT: on run 1/1
[INFO:2026-06-12 20:00:12,569]: RunnerClient: kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT: Setting up...
[INFO:2026-06-12 20:00:12,569]: RunnerClient: kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT: Running...
[INFO:2026-06-12 20:01:42,279]: RunnerClient: kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT: Tearing down...
[INFO:2026-06-12 20:02:04,736]: RunnerClient: kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT: PASS
[INFO:2026-06-12 20:02:04,738]: RunnerClient: kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT: Data: None
================================================================================
SESSION REPORT (ALL TESTS)
ducktape version: 0.14.0
session_id:       2026-06-12--005
run time:         1 minute 52.289 seconds
tests run:        1
passed:           1
flaky:            0
failed:           0
ignored:          0
================================================================================
test_id:    kafkatest.tests.streams.streams_static_membership_streams_protocol_test.StreamsStaticMembershipStreamsProtocolTest.test_temporary_static_rejoin_does_not_trigger_survivor_reconciliation.metadata_quorum=ISOLATED_KRAFT
status:     PASS
run time:   1 minute 52.168 seconds

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant