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

Reply via email to