@Internal public abstract class BaseTwoInputStreamOperatorWithStateRetention extends org.apache.flink.streaming.api.operators.AbstractStreamOperator<org.apache.flink.table.data.RowData> implements org.apache.flink.streaming.api.operators.TwoInputStreamOperator<org.apache.flink.table.data.RowData,org.apache.flink.table.data.RowData,org.apache.flink.table.data.RowData>, org.apache.flink.streaming.api.operators.Triggerable<Object,org.apache.flink.runtime.state.VoidNamespace>
TwoInputStreamOperator that allows its subclasses to clean up their state
based on a TTL. This TTL should be specified in the provided minRetentionTime and maxRetentionTime.
For each known key, this operator registers a timer (in processing time) to fire after the TTL expires. When the timer fires, the subclass can decide which state to cleanup and what further action to take.
This class takes care of maintaining at most one timer per key.
IMPORTANT NOTE TO USERS: When extending this class, do not use processing time timers in your business logic. The reason is that:
1) if your timers collide with clean up timers and you delete them, then state clean-up will not be performed, and
2) (this one is the reason why this class does not allow to override the onProcessingTime()) the onProcessingTime with your logic would be also executed on each clean up timer.
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
stateCleaningEnabled |
| Modifier | Constructor and Description |
|---|---|
protected |
BaseTwoInputStreamOperatorWithStateRetention(long minRetentionTime,
long maxRetentionTime) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
cleanupLastTimer() |
abstract void |
cleanupState(long time)
The method to be called when a cleanup timer fires.
|
void |
onProcessingTime(org.apache.flink.streaming.api.operators.InternalTimer<Object,org.apache.flink.runtime.state.VoidNamespace> timer)
The users of this class are not allowed to use processing time timers.
|
void |
open() |
protected void |
registerProcessingCleanupTimer()
If the user has specified a
minRetentionTime and maxRetentionTime, this
method registers a cleanup timer for currentProcessingTime + minRetentionTime. |
close, finish, getChainingStrategy, getContainingTask, getCurrentKey, getExecutionConfig, getInternalTimerService, getKeyedStateBackend, getKeyedStateStore, getMetricGroup, getOperatorConfig, getOperatorID, getOperatorName, getOperatorStateBackend, getOrCreateKeyedState, getPartitionedState, getPartitionedState, getProcessingTimeService, getRuntimeContext, getTimeServiceManager, getUserCodeClassloader, hasKeyContext1, hasKeyContext2, initializeState, initializeState, isUsingCustomRawKeyedState, notifyCheckpointAborted, notifyCheckpointComplete, prepareSnapshotPreBarrier, processLatencyMarker, processLatencyMarker1, processLatencyMarker2, processRecordAttributes, processRecordAttributes1, processRecordAttributes2, processWatermark, processWatermark1, processWatermark2, processWatermarkStatus, processWatermarkStatus1, processWatermarkStatus2, reportOrForwardLatencyMarker, setChainingStrategy, setCurrentKey, setKeyContextElement1, setKeyContextElement2, setProcessingTimeService, setup, snapshotState, snapshotStateclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitprocessElement1, processElement2, processLatencyMarker1, processLatencyMarker2, processRecordAttributes1, processRecordAttributes2, processWatermark1, processWatermark2, processWatermarkStatus1, processWatermarkStatus2close, finish, getMetricGroup, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotStatenotifyCheckpointAborted, notifyCheckpointCompleteprotected BaseTwoInputStreamOperatorWithStateRetention(long minRetentionTime,
long maxRetentionTime)
public void open()
throws Exception
open in interface org.apache.flink.streaming.api.operators.StreamOperator<org.apache.flink.table.data.RowData>open in class org.apache.flink.streaming.api.operators.AbstractStreamOperator<org.apache.flink.table.data.RowData>Exceptionprotected void registerProcessingCleanupTimer()
throws IOException
minRetentionTime and maxRetentionTime, this
method registers a cleanup timer for currentProcessingTime + minRetentionTime.
When this timer fires, the cleanupState(long) method is called.
IOExceptionprotected void cleanupLastTimer()
throws IOException
IOExceptionpublic final void onProcessingTime(org.apache.flink.streaming.api.operators.InternalTimer<Object,org.apache.flink.runtime.state.VoidNamespace> timer) throws Exception
public abstract void cleanupState(long time)
time - The timestamp of the fired timer.Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.