Flowmix is a flexible event processing engine for Apache Storm. It supports complex correlations of events via sliding/tumbling windows. It allows parallel streams to be processed that can be grouped together in different ways.
I see the logic of cacheWindow(buffersForRule) and window(buffer) is different between AggregatorBolt, SortBolt and JoinBolt. In JoinBolt ,there are non processing in situation① below (Line 176):
if (buffersForRule != null) {
buffer = buffersForRule.getIfPresent(flowInfo.getPartition());
if (buffer != null) { // if we have a buffer already, process it
if(op.getEvictionPolicy() == Policy.TIME)
buffer.timeEvict(op.getEvictionThreshold());
}
//Here no else .... ①
} else {
//new buffersForRule and buildWindow, then put to buffer and buffersForRule...
}
but in Agg and Sort there both has this logic:
if (cacheWindow != null) {
window = cacheWindow.getIfPresent(flowInfo.getPartition());
if (window != null) { // if we have a buffer already, process it
if (op.getEvictionPolicy() == Policy.TIME)
window.timeEvict(op.getEvictionThreshold());
} else {
//....
}
} else {
//....
}
Can u explain why here does't need?
As I understand, different partition should given different window/buffer.
I see the logic of cacheWindow(buffersForRule) and window(buffer) is different between AggregatorBolt, SortBolt and JoinBolt. In JoinBolt ,there are non processing in situation① below (Line 176):
but in Agg and Sort there both has this logic:
Can u explain why here does't need?
As I understand,
different partition should given different window/buffer
.