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

Reply via email to