[
https://issues.apache.org/jira/browse/KAFKA-7048?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16509880#comment-16509880
]
Chia-Ping Tsai commented on KAFKA-7048:
---------------------------------------
{quote}Can you show the stack trace involving the NPE ?
{quote}
{code:java}
2018-06-13 00:57:49,324 DEBUG [qtp154246471-167]
errors.ConnectExceptionMapper(39): Uncaught exception in REST call to
/connectors
java.lang.NullPointerException
at
org.apache.kafka.common.config.ConfigTransformer.transform(ConfigTransformer.java:79)
at
org.apache.kafka.connect.runtime.WorkerConfigTransformer.transform(WorkerConfigTransformer.java:42)
at
org.apache.kafka.connect.runtime.distributed.ClusterConfigState.connectorConfig(ClusterConfigState.java:120)
at
org.apache.kafka.connect.runtime.distributed.DistributedHerder$6.call(DistributedHerder.java:559)
at
org.apache.kafka.connect.runtime.distributed.DistributedHerder$6.call(DistributedHerder.java:535)
at
org.apache.kafka.connect.runtime.distributed.DistributedHerder.tick(DistributedHerder.java:271)
at
org.apache.kafka.connect.runtime.distributed.DistributedHerder.run(DistributedHerder.java:220)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748){code}
> NPE when creating connector
> ---------------------------
>
> Key: KAFKA-7048
> URL: https://issues.apache.org/jira/browse/KAFKA-7048
> Project: Kafka
> Issue Type: Bug
> Reporter: Chia-Ping Tsai
> Assignee: Chia-Ping Tsai
> Priority: Blocker
> Fix For: 2.0.0
>
>
> KAFKA-6886 introduced the ConfigTransformer to transform the given
> configuration data. ConfigTransformer#transform(Map<String, String>) expect
> the passed config won't be null but DistributedHerder#putConnectorConfig call
> the #transform before updating the snapshot (see below). Hence, it cause the
> NPE.
> {code:java}
> // Note that we use the updated connector config despite the fact that we
> don't have an updated
> // snapshot yet. The existing task info should still be accurate.
> Map<String, String> map = configState.connectorConfig(connName);
> ConnectorInfo info = new ConnectorInfo(connName, config,
> configState.tasks(connName),
> map == null ? null :
> connectorTypeForClass(map.get(ConnectorConfig.CONNECTOR_CLASS_CONFIG)));
> callback.onCompletion(null, new Created<>(!exists, info));
> return null;{code}
> We can add a null check to "configs" (see below) to resolve the NPE. It means
> we WON'T pass the null configs to configTransformer
> {code:java}
> public Map<String, String> connectorConfig(String connector) {
> Map<String, String> configs = connectorConfigs.get(connector);
> if (configTransformer != null) { // add a condition "configs != null"
> configs = configTransformer.transform(connector, configs);
> }
> return configs;
> }{code}
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)