divijvaidya opened a new pull request, #13284:
URL: https://github.com/apache/kafka/pull/13284

   # Motivation
   The test suite fails with the following error:
   ```
   org.opentest4j.AssertionFailedError: Condition not met within timeout 30000. 
topic A.test-topic-0 was not created on cluster B- 
._~:/?#[]@!$&'()*+;="<>%{}|\^`618 in time ==> expected: <true> but was: <false>
   ```
   Root cause of the failure is available in stdout:
   ```
   [2023-02-17 18:56:32,308] INFO This node is a follower for A->B- 
._~:/?#[]@!$&'()*+;="<>%{}|\^`618. Using existing connector configuration. 
(org.apache.kafka.connect.mirror.MirrorMaker:234)
   [2023-02-17 18:56:42,567] INFO Kafka MirrorMaker stopping 
(org.apache.kafka.connect.mirror.MirrorMaker:202)
   [2023-02-17 18:56:43,371] INFO Kafka MirrorMaker stopped. 
(org.apache.kafka.connect.mirror.MirrorMaker:213)
   [2023-02-17 18:56:43,371] INFO Kafka MirrorMaker stopping 
(org.apache.kafka.connect.mirror.MirrorMaker:202)
   [2023-02-17 18:56:44,376] INFO Kafka MirrorMaker stopped. 
(org.apache.kafka.connect.mirror.MirrorMaker:213)
   [2023-02-17 18:56:44,377] INFO Kafka MirrorMaker stopping 
(org.apache.kafka.connect.mirror.MirrorMaker:202)
   [2023-02-17 18:56:45,782] ERROR Failed to configure MirrorSourceConnector 
connector for A->B- ._~:/?#[]@!$&'()*+;="<>%{}|\^`618 
(org.apache.kafka.connect.mirror.MirrorMaker:236)
   org.apache.kafka.connect.errors.ConnectException: Worker is shutting down
        at 
org.apache.kafka.connect.runtime.distributed.DistributedHerder.halt(DistributedHerder.java:766)
        at 
org.apache.kafka.connect.runtime.distributed.DistributedHerder.run(DistributedHerder.java:361)
        at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
   ```
   
   The test tries to assert topic replication on the second cluster but the 
mirror maker nodes themselves are unavailable. They are unavailable because the 
connectors fail to configure. Connectors fail to configure because the worker 
is already shutting down by the time they are ready to be configured.
   
   # Change
   
   This highlights a gap in MirrorMaker startup sequence where it does not wait 
for connectors to be configured by the herders before declaring itself as 
"started". This leads to a situation where MirrorMaker claims it has started 
but the herders are still in the process of configuring the connectors. During 
this time, mirror maker will not perform any replication.
   
   With this change, we add a dependency on connector configuration for the 
MirrorMaker to declare itself as started.
   
   # Rejected alternative
   An alternative approach is to modify the test to wait for connectors to get 
configured on all 3 MM nodes before starting the actual test i.e. before making 
a call to create topic. But this alternative is artificially hiding the 
problems which users of MirrorMaker may also face.
   


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