chickenchickenlove opened a new pull request, #22561: URL: https://github.com/apache/kafka/pull/22561
### Summary This PR is based on the `KAFKA-20169-CLIENT-CORE` branch. (https://github.com/apache/kafka/pull/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 ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
