Skip to content

[core] Rewrite oss tryToWriteAtomic using atomic putObject API (#8226)#8228

Open
MaxLinyun wants to merge 1 commit into
apache:masterfrom
MaxLinyun:fix/make-tryToWriteAtomic-atomic-in-oss
Open

[core] Rewrite oss tryToWriteAtomic using atomic putObject API (#8226)#8228
MaxLinyun wants to merge 1 commit into
apache:masterfrom
MaxLinyun:fix/make-tryToWriteAtomic-atomic-in-oss

Conversation

@MaxLinyun

Copy link
Copy Markdown

Paimon's existing OSSFileIO inherits from HadoopCompliantFileIO, with file operations implemented underneath via Hadoop's AliyunOSSFileSystem. In object storage scenarios, the default implementation of tryToWriteAtomic follows the pattern of 'writing a temporary file followed by renaming'. However, renaming on OSS is essentially a copy-then-delete process and not an atomic operation.

Rewrite the implementation of tryToWriteAtomic, and directly call the conditional write API (put-if-absent) of the OSS SDK, so as to implement the atomic 'write if not exists' semantics without relying on external locks.

Purpose

Tests

@MaxLinyun MaxLinyun force-pushed the fix/make-tryToWriteAtomic-atomic-in-oss branch from 7feed20 to 18e4e42 Compare June 13, 2026 08:49
…of the OSS SDK (apache#8226)

Paimon's existing OSSFileIO inherits from HadoopCompliantFileIO, with
file operations implemented underneath via Hadoop's AliyunOSSFileSystem.
In object storage scenarios, the default implementation of tryToWriteAtomic
follows the pattern of 'writing a temporary file followed by renaming'.
However, renaming on OSS is essentially a copy-then-delete process and
not an atomic operation.

Rewrite the implementation of tryToWriteAtomic, and directly call the
conditional write API (put-if-absent) of the OSS SDK, so as to implement
the atomic 'write if not exists' semantics without relying on external locks.
@MaxLinyun MaxLinyun force-pushed the fix/make-tryToWriteAtomic-atomic-in-oss branch from 18e4e42 to a9c77ce Compare June 13, 2026 09:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant