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

  1. Don't call getHost() when using the read-only mining strategy; check instanceof ReadOnlyLogWriterFlushStrategy first.
  2. 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.
  3. 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

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


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)