From b9a79dcdd0d2d9145ae77663882942959b01fd42 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Mon, 28 Jun 2021 06:54:06 -0400 Subject: [PATCH] DBZ-3665 Provide better error description when enabling archive log only mode --- .../debezium/connector/oracle/logminer/LogMinerHelper.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/logminer/LogMinerHelper.java b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/logminer/LogMinerHelper.java index 677966c37..31b1bd9dc 100644 --- a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/logminer/LogMinerHelper.java +++ b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/logminer/LogMinerHelper.java @@ -462,6 +462,12 @@ public static void setLogFilesForMining(OracleConnection connection, Scn lastPro List logFilesForMining = getLogFilesForOffsetScn(connection, lastProcessedScn, archiveLogRetention, archiveLogOnlyMode); if (!logFilesForMining.stream().anyMatch(l -> l.getFirstScn().compareTo(lastProcessedScn) <= 0)) { + Scn minScn = logFilesForMining.stream().map(LogFile::getFirstScn).min(Scn::compareTo).orElse(Scn.NULL); + if ((minScn.isNull() || logFilesForMining.size() == 0) && archiveLogOnlyMode) { + throw new DebeziumException("The log.mining.archive.log.only mode was recently enabled and the offset SCN " + + lastProcessedScn + "is not yet in any available archive logs. " + + "Please perform an Oracle log switch and restart the connector."); + } throw new IllegalStateException("None of log files contains offset SCN: " + lastProcessedScn + ", re-snapshot is required."); }