修复 Parquet 归档的七牛流式上传 #106

Merged
WuYongJie merged 1 commits from fix/WuYongJie-parquet-archive-seekable-stream into main 2026-09-07 12:56:32 +08:00
Owner

问题

生产已完成 2,080,000 行 MariaDB → ClickHouse 精确对账,但首个 Parquet 分区上传失败:七牛适配器要求 seekable stream,ClickHouse HTTP 导出流不可 seek。

修复

  • 每个分区先复制到容器临时文件并 rewind,再交给对象存储流式上传
  • 一次只保留一个分区临时文件,完成或异常均关闭资源
  • 临时文件不可用或复制失败时保持 fail-closed

验证

  • 纯单元测试:不可 seek 流转换后内容完整且可 seek;连同盘点测试共 2 项、10 assertions
  • PHP 语法与 git diff --check 通过
  • 生产 4 KiB 最小 seekable-stream 七牛写入、读取、大小校验和删除探针通过

风险边界

  • 不删除 MariaDB 表,不激活页面读取
  • 只改变 Parquet 分区上传前的本地临时流处理
  • 生产已有 ClickHouse 代次保持 2,080,000 行已验证,归档清单当前为 0
## 问题 生产已完成 2,080,000 行 MariaDB → ClickHouse 精确对账,但首个 Parquet 分区上传失败:七牛适配器要求 seekable stream,ClickHouse HTTP 导出流不可 seek。 ## 修复 - 每个分区先复制到容器临时文件并 rewind,再交给对象存储流式上传 - 一次只保留一个分区临时文件,完成或异常均关闭资源 - 临时文件不可用或复制失败时保持 fail-closed ## 验证 - 纯单元测试:不可 seek 流转换后内容完整且可 seek;连同盘点测试共 2 项、10 assertions - PHP 语法与 `git diff --check` 通过 - 生产 4 KiB 最小 seekable-stream 七牛写入、读取、大小校验和删除探针通过 ## 风险边界 - 不删除 MariaDB 表,不激活页面读取 - 只改变 Parquet 分区上传前的本地临时流处理 - 生产已有 ClickHouse 代次保持 2,080,000 行已验证,归档清单当前为 0
WuYongJie added 1 commit 2026-09-07 12:56:19 +08:00
WuYongJie merged commit a851bbe5a7 into main 2026-09-07 12:56:32 +08:00
WuYongJie deleted branch fix/WuYongJie-parquet-archive-seekable-stream 2026-09-07 12:56:33 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WuYongJie/CaiWuXiTong#106
No description provided.