feat(fs): add OSS file system - #205
Conversation
|
I identified an OSS SDK v2 issue where a retried request can retain a stale This PR temporarily applies a small build-time patch to overwrite the header on retry. The issue has been reported to the OSS SDK maintainers, and they will address it upstream soon. |
Oh, here is a Paimon semantic-level benchmark supplement to the pure filesystem benchmark above. FYI.
Overall, OSS FS and Jindo FS show broadly comparable performance under Paimon scan semantics. The observed differences are generally within a single-digit range and do not indicate a consistent performance disadvantage, but much more like noise. |
f0eb821 to
b6e0045
Compare
zjw1111
left a comment
There was a problem hiding this comment.
Thanks for the update — the previous round of comments is addressed well: the ASF headers, the int32_t / 1000 fixes, the dedicated Executor instead of the global singleton, the option-constant unification, the PAIMON_COMMON_HTTP_CLIENT_TEST_SRCS gate, and the injected HttpTransport tests are all in good shape.
Two functional issues came up on a closer read, plus a few small nits. Details inline:
ParseTimeMilliscannot parse the timestamp formatListObjectsV2returns, so every listed entry ends up with modification time0(this breaks orphan file cleanup on OSS). Same root cause exists in the S3 implementation, so a shared helper would be nice.InferRegionstill infers a non-existent region foross-accelerate-overseas.aliyuncs.com.
cc612a5 to
d2de828
Compare
|
While testing with OSS file system, I found an issue of executor pool. Extract it for seperated PR and I think it should be addressed first: #233. |
1498288 to
f3e1e3f
Compare
Add a read-only OSS file system backed by OSS SDK v2, including configurable access, bundled build integration, documentation, and tests. Co-authored-by: GPT-5.6 Terra <codex@users.noreply.github.com>
f3e1e3f to
48c60af
Compare
Fixed in https://github.com/aliyun/alibabacloud-oss-cpp-sdk-v2/releases/tag/0.1.2, so the initial patch has been removed from this commit. |
Purpose
This PR adds a native, read-only OSS filesystem backed by Alibaba Cloud OSS SDK V2.
Motivation
Static linking and distribution
Some integration scenarios require Paimon-cpp to be linked statically into another library, such as a DuckDB extension. JindoSDK is delivered as a separate dynamic library, which makes this integration and distribution model less flexible.
Shutdown reliability in PostgreSQL processes
While integrating PostgreSQL with DuckDB, we observed an intermittent shutdown hang along the PostgreSQL → DuckDB → duckdb-paimon → paimon-cpp path when JindoSDK was loaded through the Paimon filesystem. The captured shutdown stack was:
The process also had a
bvar_samplerthread running. This points to a fork/exit lifecycle issue in JindoSDK's embedded bRPC/bvar dependencies. Since JindoSDK is closed source and brings a relatively large dependency set, it is difficult to investigate or address from Paimon-cpp.An open-source OSS filesystem
Given that OSS SDK V2 is open source, adding an OSS implementation to Paimon-cpp would provide an open and self-contained option for OSS access. The existing object-store abstraction introduced for S3 keeps this addition small and avoids duplicated filesystem logic.
Benchmark
The benchmark directly reads a 133 MiB Parquet data file belonging to a Paimon table in a real OSS environment. Both filesystems were built in a clean Release build, and each workload was run six times. Values are medians.
Open(known status)reopens a file with previously obtained metadata. It avoids an extra metadata request through the status propagation introduced in #189. The range and sequential workloads each issue a single read request.