Github user nickwallen commented on a diff in the pull request:
https://github.com/apache/metron/pull/977#discussion_r178600386
--- Diff:
metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileBuilderBolt.java
---
@@ -339,11 +362,13 @@ private void handleMessage(Tuple input) {
Long timestamp = getField(TIMESTAMP_TUPLE_FIELD, input, Long.class);
// keep track of time
- flushSignal.update(timestamp);
+ activeFlushSignal.update(timestamp);
// distribute the message
MessageRoute route = new MessageRoute(definition, entity);
- messageDistributor.distribute(message, timestamp, route,
getStellarContext());
+ synchronized (messageDistributor) {
+ messageDistributor.distribute(message, timestamp, route,
getStellarContext());
+ }
--- End diff --
Access to the `messageDistributor` has to be synchronized now. It is not
thread safe and it could be called from either the timer thread or when tuples
are received.
---