Github user ottobackwards commented on a diff in the pull request: https://github.com/apache/metron/pull/1099#discussion_r202758396 --- Diff: metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java --- @@ -182,40 +185,61 @@ public void prepare(Map stormConf, TopologyContext context, OutputCollector coll super.prepare(stormConf, context, collector); messageGetStrategy = MessageGetters.DEFAULT_BYTES_FROM_POSITION.get(); this.collector = collector; - if(getSensorParserConfig() != null) { - cache = CachingStellarProcessor.createCache(getSensorParserConfig().getCacheConfig()); - } - initializeStellar(); - if(getSensorParserConfig() != null && filter == null) { - getSensorParserConfig().getParserConfig().putIfAbsent("stellarContext", stellarContext); - if (!StringUtils.isEmpty(getSensorParserConfig().getFilterClassName())) { - filter = Filters.get(getSensorParserConfig().getFilterClassName() - , getSensorParserConfig().getParserConfig() - ); + + // Build the Stellar cache + Map<String, Object> cacheConfig = new HashMap<>(); + for (Map.Entry<String, ParserComponents> entry: sensorToComponentMap.entrySet()) { + String sensor = entry.getKey(); + SensorParserConfig config = getSensorParserConfig(sensor); + + if (config != null) { + cacheConfig.putAll(config.getCacheConfig()); } } + cache = CachingStellarProcessor.createCache(cacheConfig); - parser.init(); + // Need to prep all sensors + for (Map.Entry<String, ParserComponents> entry: sensorToComponentMap.entrySet()) { + String sensor = entry.getKey(); + MessageParser<JSONObject> parser = entry.getValue().getMessageParser(); --- End diff -- I don't believe this is correct. We want to initialize stellar PER parser. Each should have it's own stellar instance and cache.
---