Class LockRemover
- java.lang.Object
-
- org.apache.flink.streaming.api.operators.AbstractStreamOperator<java.lang.Void>
-
- org.apache.iceberg.flink.maintenance.operator.LockRemover
-
- All Implemented Interfaces:
java.io.Serializable
,org.apache.flink.api.common.state.CheckpointListener
,org.apache.flink.streaming.api.operators.Input<TaskResult>
,org.apache.flink.streaming.api.operators.KeyContext
,org.apache.flink.streaming.api.operators.KeyContextHandler
,org.apache.flink.streaming.api.operators.OneInputStreamOperator<TaskResult,java.lang.Void>
,org.apache.flink.streaming.api.operators.SetupableStreamOperator<java.lang.Void>
,org.apache.flink.streaming.api.operators.StreamOperator<java.lang.Void>
,org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.CheckpointedStreamOperator
,org.apache.flink.streaming.api.operators.YieldingOperator<java.lang.Void>
@Internal public class LockRemover extends org.apache.flink.streaming.api.operators.AbstractStreamOperator<java.lang.Void> implements org.apache.flink.streaming.api.operators.OneInputStreamOperator<TaskResult,java.lang.Void>
Manages locks and collectMetric
for the Maintenance Tasks.The assumptions about the locks are the following:
- Every
TaskResult
is followed by aWatermark
for normalTrigger
s - For the
Trigger.recovery(long)
Watermark
there is no element to process
- Normal execution - we receive a
TaskResult
and then aWatermark
- unlocking the lock is handled by theprocessElement(StreamRecord)
- Recovery without ongoing execution (unlocking the recoveryLock) - we receive the
Trigger.recovery(long)
Watermark
without anyTaskResult
- unlocking theTriggerLockFactory.createRecoveryLock()
and a possibleTriggerLockFactory.createLock()
is handled by theprocessWatermark(Watermark)
(thelastProcessedTaskStartEpoch
is 0 in this case) - Recovery with an ongoing execution - we receive a
TaskResult
and then aWatermark
- unlocking theTriggerLockFactory.createLock()
is handled by theprocessElement(StreamRecord)
, unlocking theTriggerLockFactory.createRecoveryLock()
is handled by theprocessWatermark(Watermark)
(thelastProcessedTaskStartEpoch
is the start time of the old task)
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description LockRemover(TriggerLockFactory lockFactory, java.util.List<java.lang.String> maintenanceTaskNames)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
open()
void
processElement(org.apache.flink.streaming.runtime.streamrecord.StreamRecord<TaskResult> streamRecord)
void
processWatermark(org.apache.flink.streaming.api.watermark.Watermark mark)
-
Methods inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
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, processWatermark1, processWatermark2, processWatermarkStatus, processWatermarkStatus1, processWatermarkStatus2, reportOrForwardLatencyMarker, setChainingStrategy, setCurrentKey, setKeyContextElement1, setKeyContextElement2, setMailboxExecutor, setProcessingTimeService, setup, snapshotState, snapshotState, useSplittableTimers
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.flink.api.common.state.CheckpointListener
notifyCheckpointAborted, notifyCheckpointComplete
-
Methods inherited from interface org.apache.flink.streaming.api.operators.Input
processLatencyMarker, processRecordAttributes, processWatermarkStatus
-
Methods inherited from interface org.apache.flink.streaming.api.operators.KeyContext
getCurrentKey, setCurrentKey
-
Methods inherited from interface org.apache.flink.streaming.api.operators.KeyContextHandler
hasKeyContext
-
-
-
-
Constructor Detail
-
LockRemover
public LockRemover(TriggerLockFactory lockFactory, java.util.List<java.lang.String> maintenanceTaskNames)
-
-
Method Detail
-
open
public void open() throws java.lang.Exception
- Specified by:
open
in interfaceorg.apache.flink.streaming.api.operators.StreamOperator<java.lang.Void>
- Overrides:
open
in classorg.apache.flink.streaming.api.operators.AbstractStreamOperator<java.lang.Void>
- Throws:
java.lang.Exception
-
processElement
public void processElement(org.apache.flink.streaming.runtime.streamrecord.StreamRecord<TaskResult> streamRecord)
- Specified by:
processElement
in interfaceorg.apache.flink.streaming.api.operators.Input<TaskResult>
-
processWatermark
public void processWatermark(org.apache.flink.streaming.api.watermark.Watermark mark)
- Specified by:
processWatermark
in interfaceorg.apache.flink.streaming.api.operators.Input<TaskResult>
- Overrides:
processWatermark
in classorg.apache.flink.streaming.api.operators.AbstractStreamOperator<java.lang.Void>
-
-