Class LockRemover
java.lang.Object
org.apache.flink.streaming.api.operators.AbstractStreamOperator<Void>
org.apache.iceberg.flink.maintenance.operator.LockRemover
- All Implemented Interfaces:
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,
,Void> org.apache.flink.streaming.api.operators.SetupableStreamOperator<Void>
,org.apache.flink.streaming.api.operators.StreamOperator<Void>
,org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.CheckpointedStreamOperator
,org.apache.flink.streaming.api.operators.YieldingOperator<Void>
@Internal
public class LockRemover
extends org.apache.flink.streaming.api.operators.AbstractStreamOperator<Void>
implements org.apache.flink.streaming.api.operators.OneInputStreamOperator<TaskResult,Void>
Manages locks and collect
Metric
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:
-
Field Summary
Fields inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
chainingStrategy, config, lastRecordAttributes1, lastRecordAttributes2, latencyStats, metrics, output, processingTimeService, stateHandler, stateKeySelector1, stateKeySelector2, timeServiceManager
-
Constructor Summary
ConstructorDescriptionLockRemover
(TriggerLockFactory lockFactory, List<String> maintenanceTaskNames) -
Method Summary
Modifier and TypeMethodDescriptionvoid
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
Methods inherited from interface org.apache.flink.streaming.api.operators.OneInputStreamOperator
setKeyContextElement
Methods inherited from interface org.apache.flink.streaming.api.operators.StreamOperator
close, finish, getMetricGroup, getOperatorAttributes, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotState
-
Constructor Details
-
LockRemover
-
-
Method Details
-
open
-
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<Void>
-