apache/seatunnel · error · UnsupportedOperationException

MultiTableSinkFactory only support MultiTableFactoryContext

Error message

MultiTableSinkFactory only support MultiTableFactoryContext

What it means

Guard in MultiTableSinkFactory.createSink: this factory can only be invoked with a MultiTableFactoryContext carrying per-table sink contexts; a plain TableSinkFactoryContext (single-table job or wrong factory routing) reaches it and is rejected.

Solutions

  1. Ensure the job defines multiple tables so the engine builds a MultiTableFactoryContext
  2. Check factory selection: identifier 'MultiTableSink' should only resolve for multi-table contexts
  3. When embedding programmatically, construct a MultiTableFactoryContext instead of a plain TableSinkFactoryContext
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkFactory.java:41 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/49760b09f2fdd2ff. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/sink/multitablesink/MultiTableSinkFactory.java:41

import org.apache.seatunnel.api.table.factory.MultiTableFactoryContext;
import org.apache.seatunnel.api.table.factory.TableSinkFactory;
import org.apache.seatunnel.api.table.factory.TableSinkFactoryContext;

import com.google.auto.service.AutoService;

@AutoService(Factory.class)
public class MultiTableSinkFactory implements TableSinkFactory {
    @Override
    public String factoryIdentifier() {
        return "MultiTableSink";
    }

    @Override
    public TableSink createSink(TableSinkFactoryContext context) {
        if (context instanceof MultiTableFactoryContext) {
            return () -> new MultiTableSink((MultiTableFactoryContext) context);
        } else {
            throw new UnsupportedOperationException(
                    "MultiTableSinkFactory only support MultiTableFactoryContext");
        }
    }

    @Override
    public OptionRule optionRule() {
        return OptionRule.builder().build();
    }
}

View on GitHub (pinned to cf67b549a7)