You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ij...@apache.org on 2019/05/25 04:19:57 UTC

[kafka] branch 2.3 updated: MINOR: Fix `toString` NPE in tableProcessorNode (#6807)

This is an automated email from the ASF dual-hosted git repository.

ijuma pushed a commit to branch 2.3
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/2.3 by this push:
     new f701c31  MINOR: Fix `toString` NPE in tableProcessorNode (#6807)
f701c31 is described below

commit f701c3149b8d5b02fafd4406ff1a34f763a3a851
Author: Rohan <de...@gmail.com>
AuthorDate: Fri May 24 21:18:25 2019 -0700

    MINOR: Fix `toString` NPE in tableProcessorNode (#6807)
    
    This gets hit when debug logging is enabled.
    
    Reviewers: Bill Bejeck <bi...@confluent.io>, Guozhang Wang <wa...@gmail.com>
---
 .../internals/graph/TableProcessorNode.java        |  2 +-
 .../internals/graph/TableProcessorNodeTest.java    | 60 ++++++++++++++++++++++
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNode.java b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNode.java
index 24df4d3..6fc5e25 100644
--- a/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNode.java
+++ b/streams/src/main/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNode.java
@@ -49,7 +49,7 @@ public class TableProcessorNode<K, V> extends StreamsGraphNode {
     public String toString() {
         return "TableProcessorNode{" +
             ", processorParameters=" + processorParameters +
-            ", storeBuilder=" + storeBuilder.name() +
+            ", storeBuilder=" + (storeBuilder == null ? "null" : storeBuilder.name()) +
             ", storeNames=" + Arrays.toString(storeNames) +
             "} " + super.toString();
     }
diff --git a/streams/src/test/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNodeTest.java b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNodeTest.java
new file mode 100644
index 0000000..a2c4938
--- /dev/null
+++ b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/graph/TableProcessorNodeTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.kafka.streams.kstream.internals.graph;
+
+import org.apache.kafka.streams.processor.AbstractProcessor;
+import org.apache.kafka.streams.processor.ProcessorContext;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+public class TableProcessorNodeTest {
+    private static class TestProcessor extends AbstractProcessor<String, String> {
+        @Override
+        public void init(final ProcessorContext context) {
+        }
+
+        @Override
+        public void process(final String key, final String value) {
+        }
+
+        @Override
+        public void close() {
+        }
+    }
+
+    @Test
+    public void shouldConvertToStringWithNullStoreBuilder() {
+        final TableProcessorNode<String, String> node = new TableProcessorNode<>(
+            "name",
+            new ProcessorParameters<>(TestProcessor::new, "processor"),
+            null,
+            new String[]{"store1", "store2"}
+        );
+
+        final String asString = node.toString();
+        final String expected = "storeBuilder=null";
+        assertTrue(
+            String.format(
+                "Expected toString to return string with \"%s\", received: %s",
+                expected,
+                asString),
+            asString.contains(expected)
+        );
+    }
+}
\ No newline at end of file