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.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
TaskResultis followed by aWatermarkfor normalTriggers - For the
Trigger.recovery(long)Watermarkthere is no element to process
- Normal execution - we receive a
TaskResultand then aWatermark- unlocking the lock is handled by theprocessElement(StreamRecord) - Recovery without ongoing execution (unlocking the recoveryLock) - we receive the
Trigger.recovery(long)Watermarkwithout anyTaskResult- unlocking theTriggerLockFactory.createRecoveryLock()and a possibleTriggerLockFactory.createLock()is handled by theprocessWatermark(Watermark)(thelastProcessedTaskStartEpochis 0 in this case) - Recovery with an ongoing execution - we receive a
TaskResultand then aWatermark- unlocking theTriggerLockFactory.createLock()is handled by theprocessElement(StreamRecord), unlocking theTriggerLockFactory.createRecoveryLock()is handled by theprocessWatermark(Watermark)(thelastProcessedTaskStartEpochis the start time of the old task)
- See Also:
-
Field Summary
Fields inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
combinedWatermark, config, lastRecordAttributes1, lastRecordAttributes2, latencyStats, metrics, output, processingTimeService, stateHandler, stateKeySelector1, stateKeySelector2, timeServiceManager -
Constructor Summary
ConstructorsConstructorDescriptionLockRemover(String tableName, TriggerLockFactory lockFactory, List<String> maintenanceTaskNames) -
Method Summary
Modifier and TypeMethodDescriptionvoidopen()voidprocessElement(org.apache.flink.streaming.runtime.streamrecord.StreamRecord<TaskResult> streamRecord) voidprocessWatermark(org.apache.flink.streaming.api.watermark.Watermark mark) Methods inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
beforeInitializeStateHandler, close, finish, getContainingTask, getCurrentKey, getExecutionConfig, getInternalTimerService, getKeyedStateBackend, getKeyedStateStore, getMetricGroup, getOperatorConfig, getOperatorID, getOperatorName, getOperatorStateBackend, getOrCreateKeyedState, getPartitionedState, getPartitionedState, getProcessingTimeService, getRuntimeContext, getStateKeySelector1, getStateKeySelector2, getTimeServiceManager, getUserCodeClassloader, hasKeyContext1, hasKeyContext2, initializeState, initializeState, isAsyncStateProcessingEnabled, isUsingCustomRawKeyedState, notifyCheckpointAborted, notifyCheckpointComplete, prepareSnapshotPreBarrier, processLatencyMarker, processLatencyMarker1, processLatencyMarker2, processRecordAttributes, processRecordAttributes1, processRecordAttributes2, processWatermark, processWatermark1, processWatermark1, processWatermark2, processWatermark2, processWatermarkStatus, processWatermarkStatus, processWatermarkStatus1, processWatermarkStatus2, reportOrForwardLatencyMarker, setCurrentKey, setKeyContextElement1, setKeyContextElement2, setMailboxExecutor, setProcessingTimeService, setup, snapshotState, snapshotState, useSplittableTimersMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.flink.api.common.state.CheckpointListener
notifyCheckpointAborted, notifyCheckpointCompleteMethods inherited from interface org.apache.flink.streaming.api.operators.Input
processLatencyMarker, processRecordAttributes, processWatermark, processWatermarkStatusMethods inherited from interface org.apache.flink.streaming.api.operators.KeyContext
getCurrentKey, setCurrentKeyMethods inherited from interface org.apache.flink.streaming.api.operators.KeyContextHandler
hasKeyContextMethods inherited from interface org.apache.flink.streaming.api.operators.OneInputStreamOperator
setKeyContextElementMethods inherited from interface org.apache.flink.streaming.api.operators.StreamOperator
close, finish, getMetricGroup, getOperatorAttributes, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotState
-
Constructor Details
-
LockRemover
public LockRemover(String tableName, TriggerLockFactory lockFactory, List<String> maintenanceTaskNames)
-
-
Method Details
-
open
-
processElement
public void processElement(org.apache.flink.streaming.runtime.streamrecord.StreamRecord<TaskResult> streamRecord) - Specified by:
processElementin interfaceorg.apache.flink.streaming.api.operators.Input<TaskResult>
-
processWatermark
public void processWatermark(org.apache.flink.streaming.api.watermark.Watermark mark) - Specified by:
processWatermarkin interfaceorg.apache.flink.streaming.api.operators.Input<TaskResult>- Overrides:
processWatermarkin classorg.apache.flink.streaming.api.operators.AbstractStreamOperator<Void>
-