lianetm commented on code in PR #15738:
URL: https://github.com/apache/kafka/pull/15738#discussion_r1568061403


##########
tests/kafkatest/tests/client/consumer_test.py:
##########
@@ -348,13 +348,32 @@ 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

Review Comment:
   There should be no timing issues as I see it. For the 
`consumer.joined_nodes` there is a previous `self.await_members`, that ensures 
that we wait for the time needed for all the nodes to join. As for the 
`conflict_consumer.joined_nodes()`, its for nodes that never joined, we're just 
asserting that after the non-conflicting remained without rebalance, consuming 
(ensuring activity), the conflicting ones did not join. Makes sense?  



-- 
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