Skip to content

[Bug]: StarRocks Writer中postSql 提前执行导致 StreamLoad 尚未完成,目标表数据缺失 #1320

@Sun0227

Description

@Sun0227

1️⃣ 问题描述 | Problem Description

问题描述:
当使用 starrockswriter 将数据写入 StarRocks 的临时表后,在 writer 的 postSql 中执行 INSERT INTO target SELECT * FROM tmp,发现 target 表中数据不完整,部分未导入。

初步排查是因为 StarRocks Stream Load 是异步提交,虽然 writer.flush() 被调用,但实际导入任务未完成时 postSql 已开始执行。

复现方式:

设置 writer 将数据导入 StarRocks 的中间表(如 tmp)

配置 postSql 执行 INSERT INTO real SELECT * FROM tmp

发现 real 表中行数小于 tmp 表

期望行为:
Addax 应确保所有 stream load 完成(即 SHOW LOAD WHERE label = ... 状态为 FINISHED)后再执行 postSql

建议修复方式:

支持在 writer 插件中开启 waitForStreamLoadComplete 开关;

或支持用户传入 labelPrefix,并在 close 时显式轮询 SHOW LOAD 状态;

或允许延迟执行 postSql,外部控制

starrockswriter 版本:4.1.4

2️⃣ 当前使用的 Addax 版本 | Addax Version

4.2.0 or older

3️⃣ 操作系统类型 | Operating System

None

4️⃣ 使用的 Java JDK 版本 | Java JDK Version

Oracle JDK 1.8.0

5️⃣ 相关日志/输出结果 | Relevant Log Output

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions