mjsax commented on a change in pull request #11455:
URL: https://github.com/apache/kafka/pull/11455#discussion_r791323385



##########
File path: 
streams/src/test/java/org/apache/kafka/streams/integration/GlobalKTableIntegrationTest.java
##########
@@ -176,7 +177,9 @@ public void shouldKStreamGlobalKTableLeftJoin() throws 
Exception {
         TestUtils.waitForCondition(
             () -> {
                 globalState.clear();
-                replicatedStore.all().forEachRemaining(pair -> 
globalState.put(pair.key, pair.value));
+                try (final KeyValueIterator<Long, String> it = 
replicatedStore.all()) {

Review comment:
       side cleanup to close the iterator (same below)

##########
File path: streams/src/main/java/org/apache/kafka/streams/KafkaStreams.java
##########
@@ -668,8 +669,10 @@ public synchronized void onChange(final Thread thread,
                     if (newState == GlobalStreamThread.State.RUNNING) {
                         maybeSetRunning();
                     } else if (newState == GlobalStreamThread.State.DEAD) {
-                        log.error("Global thread has died. The streams 
application or client will now close to ERROR.");
-                        closeToError();
+                        if (state != State.PENDING_SHUTDOWN) {

Review comment:
       New solution: if the instance is not in `PENDING_SHUTDOW` we know that 
an error happened and we log an ERROR and `closeToError`.
   
   On a clean close, the instance with go to `PENDING_SHUTDOWN` first, before 
shutting down the global thread, and we won't log an error and just proceed.

##########
File path: streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java
##########
@@ -459,12 +462,15 @@ public void 
shouldCleanupResourcesOnCloseWithoutPreviousStart() throws Exception
         final StreamsBuilder builder = getBuilderWithSource();
         builder.globalTable("anyTopic");
 
-        try (final KafkaStreams streams = new KafkaStreams(builder.build(), 
props, supplier, time)) {
+        try (final LogCaptureAppender appender = 
LogCaptureAppender.createAndRegister(KafkaStreams.class);
+            final KafkaStreams streams = new KafkaStreams(builder.build(), 
props, supplier, time)) {
             streams.close();
 
             waitForCondition(
                 () -> streams.state() == KafkaStreams.State.NOT_RUNNING,
                 "Streams never stopped.");
+
+            assertThat(appender.getMessages(), 
not(hasItem(containsString("ERROR"))));

Review comment:
       Verify that a clean close does not log an error




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