Github user DomenicPuzio commented on the issue: https://github.com/apache/incubator-metron/pull/359 Here's what I was seeing: We were running only one Enrichment. So our EnrichmentSplitter sends _originalTuple_ to the Join and _originalTuple_ to the Enrichment. Enrichment then sends _enrichedTuple_ to Join. Join knows that there are two streams, so it waits for two tuples to join together. When _originalTuple_ comes in first, we put it in the cache and do nothing. When _enrichedTuple_ comes in, we see that it has its mate in the cache, we join _originalTuple_ and _enrichedTuple_, and then we ack **the current tuple**, in this case, _enrichedTuple_. This means that we have never acked _originalTuple_, which caused Storm to re-send that tuple unnecessarily from the EnrichmentSplitter. Since none of the cached messages are ever acked, Storm does not know that they have been correctly handled. Adding in the ack statement completely resolved this for me. Does this clarify? And @dlyle65535, I'm not sure on the best way to do that. Now that I've explained the problem, can you provide some guidance on what you'd like to see?
--- 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. ---