lianetm commented on code in PR #15738: URL: https://github.com/apache/kafka/pull/15738#discussion_r1570773742
########## tests/kafkatest/tests/client/consumer_test.py: ########## @@ -348,26 +348,45 @@ def test_fencing_static_consumer(self, num_conflict_consumers, fencing_stage, me consumer.start() self.await_members(consumer, len(consumer.nodes)) + num_rebalances = consumer.num_rebalances() conflict_consumer.start() - self.await_members(conflict_consumer, num_conflict_consumers) - self.await_members(consumer, len(consumer.nodes) - num_conflict_consumers) + if group_protocol == consumer_group.classic_group_protocol: + # Classic protocol: conflicting members should join, and the intial ones with conflicting instance id should fail. + self.await_members(conflict_consumer, num_conflict_consumers) + self.await_members(consumer, len(consumer.nodes) - num_conflict_consumers) - wait_until(lambda: len(consumer.dead_nodes()) == num_conflict_consumers, + wait_until(lambda: len(consumer.dead_nodes()) == num_conflict_consumers, timeout_sec=10, err_msg="Timed out waiting for the fenced consumers to stop") + else: + # Consumer protocol: Existing members should remain active and new conflicting ones should not be able to join. + self.await_consumed_messages(consumer) + assert num_rebalances == consumer.num_rebalances(), "Static consumers attempt to join with instance id in use should not cause a rebalance" + assert len(consumer.joined_nodes()) == len(consumer.nodes) + assert len(conflict_consumer.joined_nodes()) == 0 + + # Stop existing nodes, so conflicting ones should be able to join. + consumer.stop_all() + wait_until(lambda: len(consumer.dead_nodes()) == len(consumer.nodes), + timeout_sec=self.session_timeout_sec+5, + err_msg="Timed out waiting for the consumer to shutdown") + conflict_consumer.start() + self.await_members(conflict_consumer, num_conflict_consumers) + + else: consumer.start() conflict_consumer.start() wait_until(lambda: len(consumer.joined_nodes()) + len(conflict_consumer.joined_nodes()) == len(consumer.nodes), - timeout_sec=self.session_timeout_sec, - err_msg="Timed out waiting for consumers to join, expected total %d joined, but only see %d joined from" + timeout_sec=self.session_timeout_sec*2, Review Comment: I added this to help a bit with the flaky behaviour, making it also consistent to how we wait for members in all other tests that rely on the [await_members](https://github.com/apache/kafka/blob/aee9724ee15ed539ae73c09cc2c2eda83ae3c864/tests/kafkatest/tests/verifiable_consumer_test.py#L84). -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org