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