GitHub user dyanarose opened a pull request: https://github.com/apache/flink/pull/5295
[FLINK-8384] [streaming] Session Window Assigner with Dynamic Gaps ## What is the purpose of the change This PR adds the ability for the Session Window assigners to to have dynamic inactivity gaps in addition to the existing static inactivity gaps. **Behaviour of dynamic gaps within existing sessions:** - scenario 1 - the new timeout is prior to the old timeout. The old timeout (the furthest in the future) is respected. - scenario 2 - the new timeout is after the old timeout. The new timeout is respected. - scenario 3 - a session is in flight, a new timeout is calculated, however no new events arrive for that session after the new timeout is calculated. This session will not have its timeout changed ## Brief change log **What's New** - SessionWindowTimeGapExtractor\<T\> - Generic Interface with one extract method that returns the time gap - DynamicEventTimeSessionWindows\<T\> - Generic event time session window - DynamicProcessingTimeSessionWindows\<T\> - Generic processing time session window - TypedEventTimeTrigger\<T\> - Generic event time trigger - TypedProcessingTimeTrigger\<T\> - Generic processing time trigger - Tests for all the above ## Verifying this change This change added tests and can be verified as follows: - added tests for the typed triggers that duplicate the existing trigger tests to prove parity - added unit tests for the dynamic session window assigners that mimic the existing static session window assigner tests to prove parity in the static case - added tests to the WindowOperatorTest class to prove the behaviour of changing inactivity gaps ## Does this pull request potentially affect one of the following parts: - Dependencies (does it add or upgrade a dependency): (no) - The public API, i.e., is any changed class annotated with `@Public(Evolving)`: (no, though the two typed trigger classes are marked `@Public(Evolving)`) - The serializers: (no) - The runtime per-record code paths (performance sensitive): (no) - Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no) - The S3 file system connector: (no) ## Documentation - Does this pull request introduce a new feature? (yes) - If yes, how is the feature documented? (docs && JavaDocs) You can merge this pull request into a Git repository by running: $ git pull https://github.com/SaleCycle/flink dynamic-session-window-gaps Alternatively you can review and apply these changes as the patch at: https://github.com/apache/flink/pull/5295.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #5295 ---- commit 399522a3e23a51ce1e860e5e09499ef98a7e340d Author: Dyana Rose <dyana.rose@...> Date: 2018-01-10T15:50:00Z [FLINK-8384] [streaming] Dynamic Gap Session Window Assigner ---- ---