Package io.debezium.pipeline
Class ChangeEventSourceCoordinator<P extends Partition,O extends OffsetContext>
java.lang.Object
io.debezium.pipeline.ChangeEventSourceCoordinator<P,O>
@ThreadSafe
public class ChangeEventSourceCoordinator<P extends Partition,O extends OffsetContext>
extends Object
Coordinates one or more
ChangeEventSource
s and executes them in order.- Author:
- Gunnar Morling
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
class
-
Field Summary
Modifier and TypeFieldDescriptionprotected final ChangeEventSourceFactory<P,
O> protected final ChangeEventSourceMetricsFactory<P>
protected final ReentrantLock
protected final ErrorHandler
protected final EventDispatcher<P,
?> protected final ExecutorService
private static final org.slf4j.Logger
private boolean
protected final DatabaseSchema<?>
static final Duration
Waiting period for the polling loop to finish.protected SnapshotChangeEventSourceMetrics<P>
protected StreamingChangeEventSourceMetrics<P>
protected StreamingChangeEventSource<P,
O> -
Constructor Summary
ConstructorDescriptionChangeEventSourceCoordinator
(Offsets<P, O> previousOffsets, ErrorHandler errorHandler, Class<? extends org.apache.kafka.connect.source.SourceConnector> connectorType, CommonConnectorConfig connectorConfig, ChangeEventSourceFactory<P, O> changeEventSourceFactory, ChangeEventSourceMetricsFactory<P> changeEventSourceMetricsFactory, EventDispatcher<P, ?> eventDispatcher, DatabaseSchema<?> schema) -
Method Summary
Modifier and TypeMethodDescriptionvoid
commitOffset
(Map<String, ?> partition, Map<String, ?> offset) protected SnapshotResult<O>
doSnapshot
(SnapshotChangeEventSource<P, O> snapshotSource, ChangeEventSource.ChangeEventSourceContext context, P partition, O previousOffset) protected ChangeEventSourceCoordinator<P,
O>.CatchUpStreamingResult executeCatchUpStreaming
(ChangeEventSource.ChangeEventSourceContext context, SnapshotChangeEventSource<P, O> snapshotSource, P partition, O previousOffset) protected void
executeChangeEventSources
(CdcSourceTaskContext taskContext, SnapshotChangeEventSource<P, O> snapshotSource, Offsets<P, O> previousOffsets, AtomicReference<LoggingContext.PreviousContext> previousLogContext, ChangeEventSource.ChangeEventSourceContext context) protected void
initStreamEvents
(P partition, O offsetContext) void
start
(CdcSourceTaskContext taskContext, ChangeEventQueueMetrics changeEventQueueMetrics, EventMetadataProvider metadataProvider) void
stop()
Stops this coordinator.protected void
streamEvents
(ChangeEventSource.ChangeEventSourceContext context, P partition, O offsetContext) protected void
streamingConnected
(boolean status)
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
SHUTDOWN_WAIT_TIMEOUT
Waiting period for the polling loop to finish. Will be applied twice, once gracefully, once forcefully. -
previousOffsets
-
errorHandler
-
changeEventSourceFactory
protected final ChangeEventSourceFactory<P extends Partition,O extends OffsetContext> changeEventSourceFactory -
changeEventSourceMetricsFactory
protected final ChangeEventSourceMetricsFactory<P extends Partition> changeEventSourceMetricsFactory -
executor
-
eventDispatcher
-
schema
-
running
private volatile boolean running -
streamingSource
protected volatile StreamingChangeEventSource<P extends Partition,O extends OffsetContext> streamingSource -
commitOffsetLock
-
snapshotMetrics
-
streamingMetrics
-
-
Constructor Details
-
ChangeEventSourceCoordinator
public ChangeEventSourceCoordinator(Offsets<P, O> previousOffsets, ErrorHandler errorHandler, Class<? extends org.apache.kafka.connect.source.SourceConnector> connectorType, CommonConnectorConfig connectorConfig, ChangeEventSourceFactory<P, O> changeEventSourceFactory, ChangeEventSourceMetricsFactory<P> changeEventSourceMetricsFactory, EventDispatcher<P, ?> eventDispatcher, DatabaseSchema<?> schema)
-
-
Method Details
-
start
public void start(CdcSourceTaskContext taskContext, ChangeEventQueueMetrics changeEventQueueMetrics, EventMetadataProvider metadataProvider) -
executeChangeEventSources
protected void executeChangeEventSources(CdcSourceTaskContext taskContext, SnapshotChangeEventSource<P, O> snapshotSource, Offsets<P, throws InterruptedExceptionO> previousOffsets, AtomicReference<LoggingContext.PreviousContext> previousLogContext, ChangeEventSource.ChangeEventSourceContext context) - Throws:
InterruptedException
-
doSnapshot
protected SnapshotResult<O> doSnapshot(SnapshotChangeEventSource<P, O> snapshotSource, ChangeEventSource.ChangeEventSourceContext context, P partition, O previousOffset) throws InterruptedException- Throws:
InterruptedException
-
executeCatchUpStreaming
protected ChangeEventSourceCoordinator<P,O>.CatchUpStreamingResult executeCatchUpStreaming(ChangeEventSource.ChangeEventSourceContext context, SnapshotChangeEventSource<P, O> snapshotSource, P partition, O previousOffset) throws InterruptedException- Throws:
InterruptedException
-
streamEvents
protected void streamEvents(ChangeEventSource.ChangeEventSourceContext context, P partition, O offsetContext) throws InterruptedException - Throws:
InterruptedException
-
initStreamEvents
- Throws:
InterruptedException
-
commitOffset
-
stop
Stops this coordinator.- Throws:
InterruptedException
-
streamingConnected
protected void streamingConnected(boolean status)
-