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
protected final NotificationService<P,
O> private boolean
protected final DatabaseSchema<?>
static final Duration
Waiting period for the polling loop to finish.protected final SignalProcessor<P,
O> 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, SignalProcessor<P, O> signalProcessor, NotificationService<P, O> notificationService) -
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) getSignalProcessor
(Offsets<P, O> previousOffset) 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
-
signalProcessor
-
notificationService
protected final NotificationService<P extends Partition,O extends OffsetContext> notificationService -
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, SignalProcessor<P, O> signalProcessor, NotificationService<P, O> notificationService)
-
-
Method Details
-
start
public void start(CdcSourceTaskContext taskContext, ChangeEventQueueMetrics changeEventQueueMetrics, EventMetadataProvider metadataProvider) -
getSignalProcessor
-
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
-
getErrorHandler
-
streamingConnected
protected void streamingConnected(boolean status)
-