From 0d2641c13fa5e9aafca16c0fbdc87fab4abc05ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=9B=E9=95=BF?= Date: Mon, 31 Jul 2017 11:14:06 +0800 Subject: [PATCH] [FLINK-7298] [table] Records can be cleared when all data in state is invalid --- .../runtime/join/ProcTimeWindowInnerJoin.scala | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/join/ProcTimeWindowInnerJoin.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/join/ProcTimeWindowInnerJoin.scala index 8a3ba43d26018..e62a18f05816d 100644 --- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/join/ProcTimeWindowInnerJoin.scala +++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/join/ProcTimeWindowInnerJoin.scala @@ -324,17 +324,18 @@ class ProcTimeWindowInnerJoin( } } - // Remove expired records from state - var i = removeList.size - 1 - while (i >= 0) { - rowMapState.remove(removeList.get(i)) - i -= 1 - } - removeList.clear() - // If the state has non-expired timestamps, register a new timer. // Otherwise clean the complete state for this input. if (validTimestamp) { + + // Remove expired records from state + var i = removeList.size - 1 + while (i >= 0) { + rowMapState.remove(removeList.get(i)) + i -= 1 + } + removeList.clear() + val cleanupTime = curTime + winSize + 1 ctx.timerService.registerProcessingTimeTimer(cleanupTime) timerState.update(cleanupTime)