DBZ-7098 Converting engine should honor unsupported tombstone flag

This commit is contained in:
Jiri Pechanec 2024-01-04 14:28:26 +01:00
parent 13703c7457
commit 7a80c9dae8

View File

@ -95,10 +95,17 @@ private static boolean isFormat(Class<? extends SerializationFormat<?>> format1,
return format1 == format2;
}
private class ConvertingChangeConsumer implements ChangeConsumer<SourceRecord> {
private final ChangeConsumer<R> handler;
private ConvertingChangeConsumer(ChangeConsumer<R> handler) {
this.handler = handler;
}
@Override
public Builder<R> notifying(ChangeConsumer<R> handler) {
delegate.notifying(
(records, committer) -> handler.handleBatch(records.stream()
public void handleBatch(List<SourceRecord> records, RecordCommitter<SourceRecord> committer) throws InterruptedException {
handler.handleBatch(records.stream()
.map(x -> toFormat.apply(x))
.collect(Collectors.toList()),
new RecordCommitter<R>() {
@ -114,7 +121,8 @@ public void markBatchFinished() throws InterruptedException {
}
@Override
public void markProcessed(R record, DebeziumEngine.Offsets sourceOffsets) throws InterruptedException {
public void markProcessed(R record, DebeziumEngine.Offsets sourceOffsets)
throws InterruptedException {
committer.markProcessed(fromFormat.apply(record), sourceOffsets);
}
@ -122,7 +130,18 @@ public void markProcessed(R record, DebeziumEngine.Offsets sourceOffsets) throws
public DebeziumEngine.Offsets buildOffsets() {
return committer.buildOffsets();
}
}));
});
}
@Override
public boolean supportsTombstoneEvents() {
return handler.supportsTombstoneEvents();
}
}
@Override
public Builder<R> notifying(ChangeConsumer<R> handler) {
delegate.notifying(new ConvertingChangeConsumer(handler));
return this;
}