apache/seatunnel · error · DebeziumException
Not applicable when using read-only flushing strategy
Error message
Not applicable when using read-only flushing strategy
What it means
ReadOnlyLogWriterFlushStrategy is the no-op flush strategy used when the Oracle connector runs with a read-only (LogMiner-only) mining user. Its getHost method is intentionally unsupported — the read-only strategy never flushes the log writer buffer, so asking for the log writer host is meaningless and always throws this DebeziumException. flush() is a no-op by design.
Solutions
- Don't call getHost() when using the read-only mining strategy; check instanceof ReadOnlyLogWriterFlushStrategy first.
- If host-based flushing is required, switch log.mining.strategy back to the default (redo_log_catalog) and use 'default' log.mining.query.filter.mode flushing.
- Use strategy.flush(scn) semantics instead — under read-only it's a deliberate no-op; configure log.mining.flush.interval.ms appropriately for the default strategy.
Example fix
// before
String host = flushStrategy.getHost();
// after
if (!(flushStrategy instanceof ReadOnlyLogWriterFlushStrategy)) {
String host = flushStrategy.getHost();
} Defensive patterns
Strategy: type-guard
Type guard
boolean flushable = !(strategy instanceof ReadOnlyLogWriterFlushStrategy);
if (flushable) { String host = strategy.getHost(); } Try / catch
try {
host = strategy.getHost();
} catch (DebeziumException e) {
if (e.getMessage().contains("read-only flushing strategy")) {
host = null; // read-only strategy: flushing is a no-op
} else { throw e; }
} Prevention
- Check the strategy type before calling getHost()/flush-based APIs
- Align custom code with the configured log.mining.strategy
- Treat flush() on the read-only strategy as an intentional no-op
When it happens
Trigger: Calling getHost() on the configured LogWriterFlushStrategy while log.mining.strategy is set to 'read_only' (or default online_catalog read-only usage), typically from custom code or another component probing the flush strategy host.
Common situations: Custom tooling or extensions that call getHost() on the strategy without checking the strategy type; mixing read-only strategy with code paths written for the default log-writer flush strategy; switching from 'redo_log_catalog'/'default' to 'online_catalog' strategy while retaining host-probing logic.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Cannot get maximum archive log SCN as no archive logs are…
- Cannot get maximum archive log SCN as no logs were…
- DML statement couldn't be parsed. Please open a Jira issue…
- Failed to calculate oldest SCN available in logs
- Failed to resolve current SCN
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/d83b89f529249293.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/io/debezium/connector/oracle/logminer/logwriter/ReadOnlyLogWriterFlushStrategy.java:26
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.debezium.connector.oracle.logminer.logwriter;
import io.debezium.DebeziumException;
import io.debezium.connector.oracle.Scn;
public class ReadOnlyLogWriterFlushStrategy implements LogWriterFlushStrategy {
@Override
public String getHost() {
throw new DebeziumException("Not applicable when using read-only flushing strategy");
}
@Override
public void flush(Scn currentScn) throws InterruptedException {
// no operation
}
@Override
public void close() throws Exception {
// no operation
}
}
View on GitHub (pinned to cf67b549a7)