private PGReplicationStream startPgReplicationStream(final LogSequenceNumber lsn, Function<ChainedLogicalStreamBuilder, ChainedLogicalStreamBuilder> configurator) throws SQLException { assert lsn != null; ChainedLogicalStreamBuilder streamBuilder = pgConnection() .getReplicationAPI() .replicationStream() .logical() .withSlotName(slotName) .withStartPosition(lsn); streamBuilder = configurator.apply(streamBuilder); if (statusUpdateIntervalMillis != null && statusUpdateIntervalMillis > 0) { streamBuilder.withStatusInterval(statusUpdateIntervalMillis, TimeUnit.MILLISECONDS); } PGReplicationStream stream = streamBuilder.start(); // TODO DBZ-508 get rid of this // Needed by tests when connections are opened and closed in a fast sequence try { Thread.sleep(10); } catch (Exception e) { } stream.forceUpdateStatus(); return stream; }
@Override public ChainedLogicalStreamBuilder optionsWithoutMetadata(ChainedLogicalStreamBuilder builder) { return builder .withSlotOption("pretty-print", 1) .withSlotOption("write-in-chunks", 1) .withSlotOption("include-xids", 1) .withSlotOption("include-timestamp", 1); }
private void createRplStream() throws SQLException { this.stream = this.rplConnection.getReplicationAPI() .replicationStream() .logical() .withSlotName(this.jdbcConfig.getSlotName()) .withSlotOption("include-xids", true) .withSlotOption("skip-empty-xacts", true) .withStatusInterval(5, TimeUnit.SECONDS) .start(); log.info("GetRplStream success,slot:{}", this.slotName); }
@Override public ChainedLogicalStreamBuilder tryOnceOptions(ChainedLogicalStreamBuilder builder) { return builder.withSlotOption("include-unchanged-toast", 0); }
private PGReplicationStream startPgReplicationStream(final LogSequenceNumber lsn, Function<ChainedLogicalStreamBuilder, ChainedLogicalStreamBuilder> configurator) throws SQLException { assert lsn != null; ChainedLogicalStreamBuilder streamBuilder = pgConnection() .getReplicationAPI() .replicationStream() .logical() .withSlotName(slotName) .withStartPosition(lsn); streamBuilder = configurator.apply(streamBuilder); if (statusUpdateIntervalMillis != null && statusUpdateIntervalMillis > 0) { streamBuilder.withStatusInterval(statusUpdateIntervalMillis, TimeUnit.MILLISECONDS); } PGReplicationStream stream = streamBuilder.start(); // TODO DBZ-508 get rid of this // Needed by tests when connections are opened and closed in a fast sequence try { Thread.sleep(10); } catch (Exception e) { } stream.forceUpdateStatus(); return stream; }
@Override public ChainedLogicalStreamBuilder tryOnceOptions(ChainedLogicalStreamBuilder builder) { return builder.withSlotOption("include-unchanged-toast", 0); }
.replicationStream() .logical() .withSlotName(replicationSlotName) .withSlotOption("include-xids", false) .withStatusInterval(replicationStatusIntervalInMilliseconds, TimeUnit.MILLISECONDS) .withStartPosition(lsn) .start();
@Override public ChainedLogicalStreamBuilder optionsWithoutMetadata(ChainedLogicalStreamBuilder builder) { return builder .withSlotOption("pretty-print", 1) .withSlotOption("write-in-chunks", 0) .withSlotOption("include-xids", 1) .withSlotOption("include-timestamp", 1); }
@Override public ChainedLogicalStreamBuilder optionsWithMetadata(ChainedLogicalStreamBuilder builder) { return optionsWithoutMetadata(builder) .withSlotOption("include-not-null", "true"); }
@Override public ChainedLogicalStreamBuilder optionsWithMetadata(ChainedLogicalStreamBuilder builder) { return optionsWithoutMetadata(builder) .withSlotOption("include-not-null", "true"); }
@Override public ChainedLogicalStreamBuilder optionsWithoutMetadata(ChainedLogicalStreamBuilder builder) { return builder .withSlotOption("pretty-print", 1) .withSlotOption("write-in-chunks", 1) .withSlotOption("include-xids", 1) .withSlotOption("include-timestamp", 1); }
@Override public ChainedLogicalStreamBuilder tryOnceOptions(ChainedLogicalStreamBuilder builder) { return builder.withSlotOption("include-unchanged-toast", 0); }
@Override public ChainedLogicalStreamBuilder optionsWithoutMetadata(ChainedLogicalStreamBuilder builder) { return builder .withSlotOption("pretty-print", 1) .withSlotOption("write-in-chunks", 0) .withSlotOption("include-xids", 1) .withSlotOption("include-timestamp", 1); }
@Override public ChainedLogicalStreamBuilder tryOnceOptions(ChainedLogicalStreamBuilder builder) { return builder.withSlotOption("include-unchanged-toast", 0); }
@Override public ChainedLogicalStreamBuilder optionsWithMetadata(ChainedLogicalStreamBuilder builder) { return optionsWithoutMetadata(builder) .withSlotOption("include-not-null", "true"); }
@Override public ChainedLogicalStreamBuilder optionsWithMetadata(ChainedLogicalStreamBuilder builder) { return optionsWithoutMetadata(builder) .withSlotOption("include-not-null", "true"); }