-
Bug
-
Resolution: Done
-
Major
-
1.5.0.Beta1
-
None
-
False
-
False
-
Undefined
-
-
LogMinerHelper.java:setRedoLogFilesForMining() currently has the following code
if (onlineLogFilesForMining.size() + archivedLogFilesForMining.size() == 0) { throw new IllegalStateException("None of log files contains offset SCN: " + lastProcessedScn + ", re-snapshot is required."); }
But this will not suffice to detect the case where no redo log covers the lastProcessedScn. To do that, something like
final boolean hasOverlappingLogFile = onlineLogFilesForMining.stream().anyMatch(l -> l.getFirstScn().compareTo(lastProcessedScn) <= 0) || archivedLogFilesForMining.stream().anyMatch(l -> l.getFirstScn().compareTo(lastProcessedScn) <= 0); if (!hasOverlappingLogFile) { throw new IllegalStateException("None of log files contains offset SCN: " + lastProcessedScn + ", re-snapshot is required."); }
would be needed.
This error case is hard to hit, because the the startup check for sufficent redo logs in LogMinerStreamingChangeEventSource.java:execute usually suffices.