lhunyady commented on code in PR #11565:
URL: https://github.com/apache/kafka/pull/11565#discussion_r927540197
##########
connect/runtime/src/main/java/org/apache/kafka/connect/util/TopicAdmin.java:
##########
@@ -329,6 +334,48 @@ public Set<String> createTopics(NewTopic... topics) {
return createOrFindTopics(topics).createdTopics();
}
+ /**
+ * Implements a retry logic around creating topic(s) in case it'd fail due
to InvalidReplicationFactorException
+ *
+ * @param topicDescription
+ * @param config
+ * @param time
+ * @return the same as {@link TopicAdmin#createTopics(NewTopic...)}
+ */
+ public Set<String> createTopicsWithRetry(NewTopic topicDescription,
WorkerConfig config, Time time) {
+ if (config instanceof DistributedConfig) {
+ DistributedConfig distributedConfig = (DistributedConfig) config;
+ long timeoutMs = distributedConfig.getTopicCreateRetryTimeoutMs();
+ long backOffMs = distributedConfig.getTopicCreateBackOffMs();
+
+ Timer timer = time.timer(timeoutMs);
+ do {
+ try {
+ return createTopics(topicDescription);
+ } catch (ConnectException e) {
+ if (retryableTopicCreationException(e)) {
+ log.info("'{}' topic creation failed due to '{}',
retrying, {}ms remaining",
+ topicDescription.name(), e.getMessage(),
timer.remainingMs());
+ timer.sleep(backOffMs);
+ } else {
+ throw e;
+ }
+ }
+ } while (timer.notExpired());
+ throw new IllegalStateException("This should not happen");
Review Comment:
This should happen if the time expires right?
--
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]