Github user dawidwys commented on the issue: https://github.com/apache/flink/pull/6205 Hi @Aitozi , Thanks for the work here. I think we could improve a bit separation of concerns in the SharedBuffer. I am a bit afraid this class will become too complex once again. How about we split the SharedBuffer into two layers: caching one(SharedBuffer) and accessing buffer e.g. `SharedBufferAccessor`. We could make the accessor `AutoCloseable`. I think it would give more explicit information about the necessity to flush the buffer. We could move to `SharedBufferAccessor` methods like: - registerEvent - put - extractPatterns - materializeMatch - materializeMatch - lockNode - releaseNode - removeNode - lockEvent - releaseEvent In the `SharedBuffer` we would leave only the caching package-protected methods. We would also add a method there to get the `SharedBufferAccessor` that would `flush` the changes on `close`. This way we would have a cleaner separation, plus we would make the flushing more intuitive. What do you think?