Class SignalBasedIncrementalSnapshotChangeEventSource<T extends DataCollectionId>
- java.lang.Object
-
- io.debezium.pipeline.source.snapshot.incremental.SignalBasedIncrementalSnapshotChangeEventSource<T>
-
- All Implemented Interfaces:
IncrementalSnapshotChangeEventSource<T>
@NotThreadSafe public class SignalBasedIncrementalSnapshotChangeEventSource<T extends DataCollectionId> extends Object implements IncrementalSnapshotChangeEventSource<T>
-
-
Field Summary
Fields Modifier and Type Field Description private Clock
clock
private CommonConnectorConfig
connectorConfig
private IncrementalSnapshotContext<T>
context
private Table
currentTable
private RelationalDatabaseSchema
databaseSchema
private DataChangeEventListener
dataListener
private JdbcConnection
jdbcConnection
private static org.slf4j.Logger
LOGGER
private SnapshotProgressListener
progressListener
private String
signalWindowStatement
private long
totalRowsScanned
private Map<org.apache.kafka.connect.data.Struct,Object[]>
window
-
Constructor Summary
Constructors Constructor Description SignalBasedIncrementalSnapshotChangeEventSource(CommonConnectorConfig config, JdbcConnection jdbcConnection, DatabaseSchema<?> databaseSchema, Clock clock, SnapshotProgressListener progressListener, DataChangeEventListener dataChangeEventListener)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDataCollectionNamesToSnapshot(List<String> dataCollectionIds, OffsetContext offsetContext)
protected void
addKeyColumnsToCondition(Table table, StringBuilder sql, String predicate)
protected String
buildChunkQuery(Table table)
protected String
buildMaxPrimaryKeyQuery(Table table)
void
closeWindow(String id, EventDispatcher<T> dispatcher, OffsetContext offsetContext)
private void
createDataEventsForTable()
Dispatches the data change events for the records of a single table.private void
emitWindowClose()
private void
emitWindowOpen()
protected ChangeRecordEmitter
getChangeRecordEmitter(T dataCollectionId, OffsetContext offsetContext, Object[] row)
Returns aChangeRecordEmitter
producing the change records for the given table row.private Threads.Timer
getTableScanLogTimer()
private void
incrementTableRowsScanned(long rows)
void
init(OffsetContext offsetContext)
private Object[]
keyFromRow(Object[] row)
void
processMessage(DataCollectionId dataCollectionId, Object key, OffsetContext offsetContext)
private void
readChunk()
protected PreparedStatement
readTableChunkStatement(String sql)
protected void
sendEvent(EventDispatcher<T> dispatcher, OffsetContext offsetContext, Object[] row)
protected void
setContext(IncrementalSnapshotContext<T> context)
private void
tableScanCompleted()
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
connectorConfig
private CommonConnectorConfig connectorConfig
-
jdbcConnection
private JdbcConnection jdbcConnection
-
clock
private final Clock clock
-
signalWindowStatement
private final String signalWindowStatement
-
databaseSchema
private final RelationalDatabaseSchema databaseSchema
-
progressListener
private final SnapshotProgressListener progressListener
-
dataListener
private final DataChangeEventListener dataListener
-
totalRowsScanned
private long totalRowsScanned
-
currentTable
private Table currentTable
-
context
private IncrementalSnapshotContext<T extends DataCollectionId> context
-
-
Constructor Detail
-
SignalBasedIncrementalSnapshotChangeEventSource
public SignalBasedIncrementalSnapshotChangeEventSource(CommonConnectorConfig config, JdbcConnection jdbcConnection, DatabaseSchema<?> databaseSchema, Clock clock, SnapshotProgressListener progressListener, DataChangeEventListener dataChangeEventListener)
-
-
Method Detail
-
closeWindow
public void closeWindow(String id, EventDispatcher<T> dispatcher, OffsetContext offsetContext) throws InterruptedException
- Specified by:
closeWindow
in interfaceIncrementalSnapshotChangeEventSource<T extends DataCollectionId>
- Throws:
InterruptedException
-
sendEvent
protected void sendEvent(EventDispatcher<T> dispatcher, OffsetContext offsetContext, Object[] row) throws InterruptedException
- Throws:
InterruptedException
-
getChangeRecordEmitter
protected ChangeRecordEmitter getChangeRecordEmitter(T dataCollectionId, OffsetContext offsetContext, Object[] row)
Returns aChangeRecordEmitter
producing the change records for the given table row.
-
processMessage
public void processMessage(DataCollectionId dataCollectionId, Object key, OffsetContext offsetContext)
- Specified by:
processMessage
in interfaceIncrementalSnapshotChangeEventSource<T extends DataCollectionId>
-
emitWindowOpen
private void emitWindowOpen() throws SQLException
- Throws:
SQLException
-
emitWindowClose
private void emitWindowClose() throws SQLException
- Throws:
SQLException
-
init
public void init(OffsetContext offsetContext)
- Specified by:
init
in interfaceIncrementalSnapshotChangeEventSource<T extends DataCollectionId>
-
readChunk
private void readChunk() throws InterruptedException
- Throws:
InterruptedException
-
addDataCollectionNamesToSnapshot
public void addDataCollectionNamesToSnapshot(List<String> dataCollectionIds, OffsetContext offsetContext) throws InterruptedException
- Specified by:
addDataCollectionNamesToSnapshot
in interfaceIncrementalSnapshotChangeEventSource<T extends DataCollectionId>
- Throws:
InterruptedException
-
addKeyColumnsToCondition
protected void addKeyColumnsToCondition(Table table, StringBuilder sql, String predicate)
-
createDataEventsForTable
private void createDataEventsForTable() throws InterruptedException
Dispatches the data change events for the records of a single table.- Throws:
InterruptedException
-
incrementTableRowsScanned
private void incrementTableRowsScanned(long rows)
-
tableScanCompleted
private void tableScanCompleted()
-
readTableChunkStatement
protected PreparedStatement readTableChunkStatement(String sql) throws SQLException
- Throws:
SQLException
-
getTableScanLogTimer
private Threads.Timer getTableScanLogTimer()
-
setContext
protected void setContext(IncrementalSnapshotContext<T> context)
-
-