From f6cf4d4c73d62f151be7c7204b0bf157e7cb8d27 Mon Sep 17 00:00:00 2001 From: cstella Date: Wed, 11 Apr 2018 16:12:33 -0400 Subject: [PATCH 1/2] METRON-1521: JSONMapParser is no longer serializable --- .../java/org/apache/metron/parsers/json/JSONMapParser.java | 4 ++-- .../org/apache/metron/parsers/integration/ParserDriver.java | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java index bddf35dfd5..d0476a7e8f 100644 --- a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java +++ b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java @@ -89,8 +89,7 @@ public JSONObject handle(String key, Map value, JSONObject obj) { public static final String JSONP_QUERY = "jsonpQuery"; private MapStrategy mapStrategy = MapStrategy.DROP; - private TypeRef>> typeRef = new TypeRef>>() { - }; + private TypeRef>> typeRef = null; private String jsonpQuery = null; @@ -99,6 +98,7 @@ public void configure(Map config) { String strategyStr = (String) config.getOrDefault(MAP_STRATEGY_CONFIG, MapStrategy.DROP.name()); mapStrategy = MapStrategy.valueOf(strategyStr); if (config.containsKey(JSONP_QUERY)) { + typeRef = new TypeRef>>() { }; jsonpQuery = (String) config.get(JSONP_QUERY); Configuration.setDefaults(new Configuration.Defaults() { diff --git a/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java b/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java index deb0217901..b03ea809af 100644 --- a/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java +++ b/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java @@ -18,6 +18,7 @@ package org.apache.metron.parsers.integration; import com.google.common.collect.ImmutableList; +import org.apache.commons.lang.SerializationUtils; import org.apache.metron.common.configuration.ConfigurationsUtils; import org.apache.metron.common.configuration.FieldValidator; import org.apache.metron.common.configuration.ParserConfigurations; @@ -42,6 +43,7 @@ import java.io.Closeable; import java.io.IOException; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -54,7 +56,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ParserDriver { +public class ParserDriver implements Serializable { private static final Logger LOG = LoggerFactory.getLogger(ParserBolt.class); public static class CollectingWriter implements MessageWriter{ List output; @@ -151,6 +153,8 @@ public ParserDriver(String sensorType, String parserConfig, String globalConfig) public ProcessorResult> run(List in) { ShimParserBolt bolt = new ShimParserBolt(new ArrayList<>()); + byte[] b = SerializationUtils.serialize(bolt); + ShimParserBolt b2 = (ShimParserBolt) SerializationUtils.deserialize(b); OutputCollector collector = mock(OutputCollector.class); bolt.prepare(null, null, collector); for(byte[] record : in) { From 39234a120674e85ae514d4f348d1e771b8616547 Mon Sep 17 00:00:00 2001 From: cstella Date: Wed, 11 Apr 2018 16:41:10 -0400 Subject: [PATCH 2/2] forgot the transient --- .../main/java/org/apache/metron/parsers/json/JSONMapParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java index d0476a7e8f..f5d67f99c7 100644 --- a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java +++ b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java @@ -89,7 +89,7 @@ public JSONObject handle(String key, Map value, JSONObject obj) { public static final String JSONP_QUERY = "jsonpQuery"; private MapStrategy mapStrategy = MapStrategy.DROP; - private TypeRef>> typeRef = null; + private transient TypeRef>> typeRef = null; private String jsonpQuery = null;