[
https://issues.apache.org/jira/browse/FLINK-41008?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-41008:
-----------------------------------
Labels: pull-request-available (was: )
> Support multi-table transaction stream load in StarRocks pipeline connector
> ---------------------------------------------------------------------------
>
> Key: FLINK-41008
> URL: https://issues.apache.org/jira/browse/FLINK-41008
> Project: Flink
> Issue Type: Improvement
> Components: Flink CDC
> Reporter: peiyu
> Priority: Major
> Labels: pull-request-available
>
> h2. Background
> The StarRocks Flink Connector introduced multi-table transaction stream
> load in 1.2.15 (upstream PR
> StarRocks/starrocks-connector-for-apache-flink#487),
> with several hardening fixes in 1.2.16. It allows multiple tables written
> in the same flush cycle to share one StarRocks transaction label, so they
> become visible atomically, and reduces the number of transactions/labels
> from one-per-table to one-per-sink-subtask.
> Currently the Flink CDC StarRocks pipeline connector (after FLINK-41006,
> connector 1.2.16) does not expose this capability:
> * Each table still commits with its own independent transaction label.
> * Tables written in the same checkpoint/flush cycle are not visible
> atomically, which shows up as an inconsistency window on failure
> recovery (converged later by primary-key idempotent replays).
> * Wide-table-count sync jobs create many small transactions per flush
> cycle, adding FE pressure.
> h2. Proposal
> Expose the capability behind an opt-in option:
> * Add {{sink.transaction.multi-table.enabled}} (default {{false}}) and
> {{sink.transaction.multi-table.buffer-size}} options, passed through
> to the StarRocks connector. With the option disabled, behavior stays
> unchanged.
> * Fail fast at pipeline submission when the option is enabled but the
> StarRocks server version is below 4.0 or unreachable
> ({{SELECT CURRENT_VERSION()}} via JDBC).
> * Fail fast when schema change events target more than one database,
> since a shared StarRocks transaction is single-database scoped.
> * When enabled, mark every serialized row with a fixed source partition
> and a transaction-end flag, so all tables written by the same sink
> subtask within one flush cycle share one transaction label while
> keeping the current at-least-once flush cadence.
> h2. Limitations (to be documented)
> * Requires StarRocks server >= 4.0.
> * All target tables must be routed to the same StarRocks database.
> * Semantics stays at-least-once; duplicates on failure are deduplicated
> by the primary-key table.
> * Transaction scope = sink subtask: cross-subtask visibility is not
> synchronized (same granularity as the upstream connector).
> h2. Depends on
> FLINK-41006 (Upgrade StarRocks Flink connector to 1.2.16)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)