Github user merrimanr commented on a diff in the pull request:

    https://github.com/apache/incubator-metron/pull/308#discussion_r83497449
  
    --- Diff: 
metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/interfaces/MessageParser.java
 ---
    @@ -34,15 +34,15 @@
        * @param rawMessage
        * @return If null is returned, this is treated as an empty list.
        */
    -  List<T> parse(byte[] rawMessage);
    +  List<T> parse(byte[] rawMessage, SensorParserConfig sensorParserConfig);
    --- End diff --
    
    I'll be honest, the Java 8 defaults weren't obvious to me either until I 
looked closer at the MessageParser interface :)
    
    All this synchronization talk makes me nervous.  Would it make things 
simpler if we detected the config change in ParserBolt.execute and 
re-initialized the grok object from there?  We could save a cached copy of the 
config in the ParserBolt on each call to execute and detect changes before 
parse is called using the hashing approach you suggested earlier.  This is the 
reason I initially changed the interface parse method to include the most 
recent config, to avoid multi-threading complexity.  This is approach is very 
similar, we're just using a different method to pass this config in and 
detecting a change in ParserBolt instead of GrokParser.  The parse method is 
synchronous by nature anyways.  It doesn't need to be aware of a config change 
immediately, only when the parse method is called.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to