mjsax commented on code in PR #17664:
URL: https://github.com/apache/kafka/pull/17664#discussion_r1826430616
##########
streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java:
##########
@@ -1668,6 +1669,33 @@ public void shouldReturnAdminInstanceID() {
}
}
+ @Test
+ public void shouldReturnProducerAndConsumerInstanceIds() {
+ prepareStreams();
+ prepareStreamThread(streamThreadOne, 1);
+ prepareStreamThread(streamThreadTwo, 2);
+ final Uuid mainConsumerInstanceId = Uuid.randomUuid();
+ final Uuid producerInstanceId = Uuid.randomUuid();
+ final KafkaFutureImpl<Uuid> consumerFuture = new KafkaFutureImpl<>();
+ final KafkaFutureImpl<Uuid> producerFuture = new KafkaFutureImpl<>();
+ consumerFuture.complete(mainConsumerInstanceId);
+ producerFuture.complete(producerInstanceId);
+ final Uuid adminInstanceId = Uuid.randomUuid();
+ adminClient.setClientInstanceId(adminInstanceId);
Review Comment:
Why do we need `adminClient` and `adminInstanceId` - seems both are unused
below.
##########
streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java:
##########
@@ -1668,6 +1669,33 @@ public void shouldReturnAdminInstanceID() {
}
}
+ @Test
+ public void shouldReturnProducerAndConsumerInstanceIds() {
+ prepareStreams();
+ prepareStreamThread(streamThreadOne, 1);
+ prepareStreamThread(streamThreadTwo, 2);
+ final Uuid mainConsumerInstanceId = Uuid.randomUuid();
+ final Uuid producerInstanceId = Uuid.randomUuid();
+ final KafkaFutureImpl<Uuid> consumerFuture = new KafkaFutureImpl<>();
+ final KafkaFutureImpl<Uuid> producerFuture = new KafkaFutureImpl<>();
+ consumerFuture.complete(mainConsumerInstanceId);
+ producerFuture.complete(producerInstanceId);
+ final Uuid adminInstanceId = Uuid.randomUuid();
+ adminClient.setClientInstanceId(adminInstanceId);
+
+ final Map<String, KafkaFuture<Uuid>> expectedClientIds =
Map.of("main-consumer", consumerFuture, "some-thread-producer-id",
producerFuture);
+
when(streamThreadOne.clientInstanceIds(any())).thenReturn(expectedClientIds);
Review Comment:
Seems we are only using `streamThreadOne` here? Why do we
`prepareStreamThread(streamThreadTwo, 2)` above?
##########
streams/src/main/java/org/apache/kafka/streams/KafkaStreams.java:
##########
@@ -1929,10 +1930,18 @@ public synchronized ClientInstanceIds
clientInstanceIds(final Duration timeout)
// could be `null` if telemetry is disabled on the consumer itself
if (instanceId != null) {
- clientInstanceIds.addConsumerInstanceId(
- clientFuture.getKey(),
- instanceId
- );
+ final String clientFutureKey = clientFuture.getKey();
+ if
(clientFutureKey.toLowerCase(Locale.getDefault()).contains("producer")) {
Review Comment:
Should we look for `.endsWith("-producer")` instead of using `contains()`?
--
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]