mirror of https://github.com/apache/kafka.git
				
				
				
			HOTFIX: Fix StreamThreadTest (#19562)
Commit732ed06changed the logic of handling shutdowns, but in parallel commit3fae785had introduced a new unit test for checking how to shut down, which was broken by the later commit. Reviewers: David Jacot <djacot@confluent.io>
This commit is contained in:
		
							parent
							
								
									965743c35b
								
							
						
					
					
						commit
						d087ade527
					
				|  | @ -45,6 +45,7 @@ import org.apache.kafka.common.errors.ProducerFencedException; | |||
| import org.apache.kafka.common.errors.TimeoutException; | ||||
| import org.apache.kafka.common.header.internals.RecordHeaders; | ||||
| import org.apache.kafka.common.internals.KafkaFutureImpl; | ||||
| import org.apache.kafka.common.message.StreamsGroupHeartbeatResponseData; | ||||
| import org.apache.kafka.common.metrics.JmxReporter; | ||||
| import org.apache.kafka.common.metrics.KafkaMetric; | ||||
| import org.apache.kafka.common.metrics.KafkaMetricsContext; | ||||
|  | @ -52,6 +53,7 @@ import org.apache.kafka.common.metrics.Measurable; | |||
| import org.apache.kafka.common.metrics.Metrics; | ||||
| import org.apache.kafka.common.metrics.MetricsContext; | ||||
| import org.apache.kafka.common.record.TimestampType; | ||||
| import org.apache.kafka.common.requests.StreamsGroupHeartbeatResponse; | ||||
| import org.apache.kafka.common.serialization.Serdes; | ||||
| import org.apache.kafka.common.utils.Bytes; | ||||
| import org.apache.kafka.common.utils.LogCaptureAppender; | ||||
|  | @ -82,7 +84,6 @@ import org.apache.kafka.streams.processor.api.ProcessorContext; | |||
| import org.apache.kafka.streams.processor.api.ProcessorSupplier; | ||||
| import org.apache.kafka.streams.processor.api.Record; | ||||
| import org.apache.kafka.streams.processor.internals.StreamThread.State; | ||||
| import org.apache.kafka.streams.processor.internals.assignment.AssignorError; | ||||
| import org.apache.kafka.streams.processor.internals.assignment.ReferenceContainer; | ||||
| import org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl; | ||||
| import org.apache.kafka.streams.processor.internals.tasks.DefaultTaskManager; | ||||
|  | @ -178,6 +179,7 @@ import static org.mockito.Mockito.doNothing; | |||
| import static org.mockito.Mockito.doThrow; | ||||
| import static org.mockito.Mockito.lenient; | ||||
| import static org.mockito.Mockito.mock; | ||||
| import static org.mockito.Mockito.never; | ||||
| import static org.mockito.Mockito.times; | ||||
| import static org.mockito.Mockito.verify; | ||||
| import static org.mockito.Mockito.when; | ||||
|  | @ -640,7 +642,7 @@ public class StreamThreadTest { | |||
|         thread.setState(State.PARTITIONS_REVOKED); | ||||
|         thread.runOnceWithoutProcessingThreads(); | ||||
| 
 | ||||
|         Mockito.verify(taskManager, Mockito.never()).process(Mockito.anyInt(), Mockito.any()); | ||||
|         Mockito.verify(taskManager, never()).process(Mockito.anyInt(), Mockito.any()); | ||||
|     } | ||||
| 
 | ||||
|     @ParameterizedTest | ||||
|  | @ -3800,7 +3802,7 @@ public class StreamThreadTest { | |||
|             Map.of(), | ||||
|             Map.of() | ||||
|         ); | ||||
|         final AtomicInteger assignmentErrorCode = new AtomicInteger(0); | ||||
|         final Runnable shutdownErrorHook = mock(Runnable.class); | ||||
| 
 | ||||
|         final Properties props = configProps(false, false, false); | ||||
|         final StreamsConfig config = new StreamsConfig(props); | ||||
|  | @ -3819,10 +3821,10 @@ public class StreamThreadTest { | |||
|             PROCESS_ID, | ||||
|             CLIENT_ID, | ||||
|             new LogContext(""), | ||||
|             assignmentErrorCode, | ||||
|             null, | ||||
|             new AtomicLong(Long.MAX_VALUE), | ||||
|             new LinkedList<>(), | ||||
|             null, | ||||
|             shutdownErrorHook, | ||||
|             HANDLER, | ||||
|             null, | ||||
|             Optional.of(streamsRebalanceData), | ||||
|  | @ -3831,11 +3833,15 @@ public class StreamThreadTest { | |||
| 
 | ||||
|         thread.setState(State.STARTING); | ||||
|         thread.runOnceWithoutProcessingThreads(); | ||||
|         assertEquals(0, assignmentErrorCode.get()); | ||||
|         verify(shutdownErrorHook, never()).run(); | ||||
| 
 | ||||
|         streamsRebalanceData.requestShutdown(); | ||||
|         streamsRebalanceData.setStatuses(List.of( | ||||
|             new StreamsGroupHeartbeatResponseData.Status() | ||||
|                 .setStatusCode(StreamsGroupHeartbeatResponse.Status.SHUTDOWN_APPLICATION.code()) | ||||
|                 .setStatusDetail("Shutdown requested") | ||||
|         )); | ||||
|         thread.runOnceWithoutProcessingThreads(); | ||||
|         assertEquals(AssignorError.SHUTDOWN_REQUESTED.code(), assignmentErrorCode.get()); | ||||
|         verify(shutdownErrorHook).run(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|  | @ -3850,9 +3856,9 @@ public class StreamThreadTest { | |||
|             Map.of(), | ||||
|             Map.of() | ||||
|         ); | ||||
|         final AtomicInteger assignmentErrorCode = new AtomicInteger(0); | ||||
| 
 | ||||
|         final Properties props = configProps(false, false, false); | ||||
|         final Runnable shutdownErrorHook = mock(Runnable.class); | ||||
|         final StreamsConfig config = new StreamsConfig(props); | ||||
|         thread = new StreamThread( | ||||
|             new MockTime(1), | ||||
|  | @ -3869,10 +3875,10 @@ public class StreamThreadTest { | |||
|             PROCESS_ID, | ||||
|             CLIENT_ID, | ||||
|             new LogContext(""), | ||||
|             assignmentErrorCode, | ||||
|             null, | ||||
|             new AtomicLong(Long.MAX_VALUE), | ||||
|             new LinkedList<>(), | ||||
|             null, | ||||
|             shutdownErrorHook, | ||||
|             HANDLER, | ||||
|             null, | ||||
|             Optional.of(streamsRebalanceData), | ||||
|  | @ -3881,11 +3887,15 @@ public class StreamThreadTest { | |||
| 
 | ||||
|         thread.setState(State.STARTING); | ||||
|         thread.runOnceWithProcessingThreads(); | ||||
|         assertEquals(0, assignmentErrorCode.get()); | ||||
|         verify(shutdownErrorHook, never()).run(); | ||||
| 
 | ||||
|         streamsRebalanceData.requestShutdown(); | ||||
|         streamsRebalanceData.setStatuses(List.of( | ||||
|             new StreamsGroupHeartbeatResponseData.Status() | ||||
|                 .setStatusCode(StreamsGroupHeartbeatResponse.Status.SHUTDOWN_APPLICATION.code()) | ||||
|                 .setStatusDetail("Shutdown requested") | ||||
|         )); | ||||
|         thread.runOnceWithProcessingThreads(); | ||||
|         assertEquals(AssignorError.SHUTDOWN_REQUESTED.code(), assignmentErrorCode.get()); | ||||
|         verify(shutdownErrorHook).run(); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue