[ 
https://issues.apache.org/jira/browse/KAFKA-7048?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16515255#comment-16515255
 ] 

ASF GitHub Bot commented on KAFKA-7048:
---------------------------------------

guozhangwang closed pull request #5202: KAFKA-7048 NPE when creating connector
URL: https://github.com/apache/kafka/pull/5202
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfigTransformer.java
 
b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfigTransformer.java
index b8465c058ed..7efb481ac75 100644
--- 
a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfigTransformer.java
+++ 
b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/WorkerConfigTransformer.java
@@ -39,6 +39,7 @@ public WorkerConfigTransformer(Worker worker, Map<String, 
ConfigProvider> config
     }
 
     public Map<String, String> transform(String connectorName, Map<String, 
String> configs) {
+        if (configs == null) return null;
         ConfigTransformerResult result = configTransformer.transform(configs);
         scheduleReload(connectorName, result.ttls());
         return result.data();
diff --git 
a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConfigTransformerTest.java
 
b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConfigTransformerTest.java
index edd4a6c5c69..300022de76e 100644
--- 
a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConfigTransformerTest.java
+++ 
b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/WorkerConfigTransformerTest.java
@@ -32,6 +32,7 @@
 import java.util.Set;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.powermock.api.easymock.PowerMock.replayAll;
 
 @RunWith(PowerMockRunner.class)
@@ -110,6 +111,11 @@ public void 
testReplaceVariableWithTTLFirstCancelThenScheduleRestart() throws Ex
         assertEquals(TEST_RESULT_WITH_LONGER_TTL, result.get(MY_KEY));
     }
 
+    @Test
+    public void testTransformNullConfiguration() {
+        assertNull(configTransformer.transform(MY_CONNECTOR, null));
+    }
+
     public static class TestConfigProvider implements ConfigProvider {
 
         public void configure(Map<String, ?> configs) {


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to