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

    https://github.com/apache/flink/pull/6168#discussion_r197461704
  
    --- Diff: 
flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/nfa/NFA.java ---
    @@ -609,7 +611,7 @@ public void close() throws Exception {
                                                        startTimestamp);
     
                                        //check if newly created state is 
optional (have a PROCEED path to Final state)
    -                                   final State<T> finalState = 
findFinalStateAfterProceed(sharedBuffer, nextState, event.getEvent(), 
computationState);
    +                                   final State<T> finalState = 
findFinalStateAfterProceed(new ConditionContext<>(this, sharedBuffer, 
computationState), nextState, event.getEvent());
    --- End diff --
    
    Yes that is true the shared buffer might change but only "after" the CS. I 
mean those changes can't affect partial match for current Computation State. 
Therefore I would suggest to remove the flag completely and just keep the lazy 
evaluation of `matchedEvents` in `ConditionContext` by comparing it to null:
    
        if (matchedEvents == null) {
                this.matchedEvents = nfa.extractCurrentMatches(sharedBuffer, 
computationState);
        }



---

Reply via email to