@Internal public abstract class BaseTwoInputStreamOperatorWithStateRetention extends AbstractStreamOperator<RowData> implements TwoInputStreamOperator<RowData,RowData,RowData>, Triggerable<Object,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 |
chainingStrategy, config, lastRecordAttributes1, lastRecordAttributes2, latencyStats, LOG, metrics, output, processingTimeService, stateHandler, stateKeySelector1, stateKeySelector2, timeServiceManager
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(InternalTimer<Object,VoidNamespace> timer)
The users of this class are not allowed to use processing time timers.
|
void |
open()
This method is called immediately before any elements are processed, it should contain the
operator's initialization logic, e.g. state initialization.
|
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, getStateKeySelector1, getStateKeySelector2, 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, setMailboxExecutor, setProcessingTimeService, setup, snapshotState, snapshotState, useSplittableTimers
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
processElement1, processElement2, processLatencyMarker1, processLatencyMarker2, processRecordAttributes1, processRecordAttributes2, processWatermark1, processWatermark2, processWatermarkStatus1, processWatermarkStatus2
close, finish, getMetricGroup, getOperatorAttributes, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotState
notifyCheckpointAborted, notifyCheckpointComplete
getCurrentKey, setCurrentKey
onEventTime
hasKeyContext
protected BaseTwoInputStreamOperatorWithStateRetention(long minRetentionTime, long maxRetentionTime)
public void open() throws Exception
AbstractStreamOperator
The default implementation does nothing.
open
in interface StreamOperator<RowData>
open
in class AbstractStreamOperator<RowData>
Exception
- An exception in this method causes the operator to fail.protected 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.
IOException
protected void cleanupLastTimer() throws IOException
IOException
public final void onProcessingTime(InternalTimer<Object,VoidNamespace> timer) throws Exception
onProcessingTime
in interface Triggerable<Object,VoidNamespace>
Exception
public abstract void cleanupState(long time)
time
- The timestamp of the fired timer.Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.