[
https://issues.apache.org/jira/browse/KAFKA-14967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mickael Maison reassigned KAFKA-14967:
--------------------------------------
Fix Version/s: 3.6.0
Assignee: James Shaw
Resolution: Fixed
> MockAdminClient throws NullPointerException in CreateTopicsResult
> -----------------------------------------------------------------
>
> Key: KAFKA-14967
> URL: https://issues.apache.org/jira/browse/KAFKA-14967
> Project: Kafka
> Issue Type: Bug
> Components: clients
> Affects Versions: 3.4.0
> Reporter: James Shaw
> Assignee: James Shaw
> Priority: Major
> Fix For: 3.6.0
>
>
> Calling {{CreateTopicsResult.topicId().get()}} throws
> {{{}NullPointerException{}}}, while {{KafkaAdminClient}} correctly returns
> the topicId.
> The NPE appears to be caused by [{{MockAdminClient.createTopics()}} calling
> {{future.complete(null)}}|https://github.com/apache/kafka/blame/trunk/clients/src/test/java/org/apache/kafka/clients/admin/MockAdminClient.java#L394]
> Stacktrace:
> {code:java}
> java.util.concurrent.ExecutionException: java.lang.NullPointerException
> at
> java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
> at
> java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
> at
> org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:165)
> at
> MockAdminClientBug.shouldNotThrowNullPointerException(MockAdminClientBug.java:37)
> [snip]
> Caused by: java.lang.NullPointerException
> at
> org.apache.kafka.common.internals.KafkaFutureImpl.lambda$thenApply$0(KafkaFutureImpl.java:60)
> at
> java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684)
> at
> java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
> at
> java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168)
> at
> org.apache.kafka.common.internals.KafkaFutureImpl.thenApply(KafkaFutureImpl.java:58)
> at
> org.apache.kafka.clients.admin.CreateTopicsResult.topicId(CreateTopicsResult.java:82)
> ... 85 more
> {code}
> Test case to reproduce:
> {code:java}
>
> import org.apache.kafka.clients.admin.Admin;
> import org.apache.kafka.clients.admin.CreateTopicsResult;
> import org.apache.kafka.clients.admin.MockAdminClient;
> import org.apache.kafka.clients.admin.NewTopic;
> import org.apache.kafka.common.Node;
> import org.apache.kafka.common.Uuid;
> import org.junit.jupiter.api.Test;
> import java.util.Optional;
> import java.util.concurrent.ExecutionException;
> import static java.util.Collections.singletonList;
> public class MockAdminClientBug {
> @Test
> void shouldNotThrowNullPointerException() throws ExecutionException,
> InterruptedException {
> Node controller = new Node(0, "mock", 0);
> try (Admin admin = new MockAdminClient(singletonList(controller),
> controller)) {
> CreateTopicsResult result = admin.createTopics(singletonList(new
> NewTopic("TestTopic", Optional.empty(), Optional.empty())));
> Uuid topicId = result.topicId("TestTopic").get();
> System.out.println(topicId);
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)