-
Bug
-
Resolution: Unresolved
-
Major
-
3.1.3.Final, 3.2.0.Final
-
None
-
False
-
-
False
-
-
Debezium does not check for log switches in between LogMiner read operations out of an abundance of caution around performance, particularly where executing the same check would result in a more often than not unnecessary query round trip.
However, in high-traffic databases where there is a high turnover of redo logs while the current batch is being processed, the lack of this check can lead to LogMiner inadvertently not recognizing a log switch and potentially not supplying Debezium with changes.
Therefore, we need a highly efficient way to detect when log switches occur and trigger the processing thread to terminate early.
We should not need to check whether a log switch has occurred while the read position is within the boundary of archive logs, so we should probably track across all mined logs, what it the min SCN where the redo thread's online logs start and only once our read position is equal to or greater do we check for log switches, and likely on an interval of 1s.