Skip to content

fix(storage): same-shard object staging and safe orphan preservation - #15

Merged
servicememeai merged 7 commits into
devfrom
fix/v2/staging-gc-20261020
Oct 20, 2026
Merged

servicememeai merged 7 commits into
devfrom
fix/v2/staging-gc-20261020

Conversation

@servicememeai

Copy link
Copy Markdown

Purpose

Deliver the in-progress local-object EXDEV fix into the current dev without selecting an archived fork or changing any running storage path.

Scope

  • Base: current Server dev@6fc5493, plus the previously reviewed same-shard C/Go staging patch e682060.
  • Create each local object temporary file in the destination object's hash-shard directory; atomically rename only after a complete write; preserve existing object identifiers and Seafile repository bindings.
  • C/Go failure cleanup and strict published-ID enumeration stay enabled.
  • Additional safety correction: whole-store removal now unlinks only valid published 40-hex objects in valid shard directories. Current .cf-tmp-*, previous <object>.XXXXXX remnants, and unrecognized directory contents remain untouched; a nonempty store produces a visible removal failure for maintenance.
  • Extend the actual C backend tests to assert that old/new staging remnants and unrecognized shard contents survive removal.

Acceptance / boundaries

  • Run bash tests/local_storage/run.sh, cd fileserver && go test ./objstore, and native build CI.
  • Run the isolated Linux bind-mount regression with CF_TEST_BIND_MOUNTS=1 on a disposable mount-capable runner before promoting a DEV image (ordinary go test intentionally skips it).
  • Cross-repo current-dev assembly is tracked by Docker PR fix(build): restore symbols removed with legacy SQL #23. Hub source isolation is tracked by Hub PR #32.
  • No DB migrations, no on-disk format changes, no deployment, no production writes. This PR is not evidence of Etech DEV upload acceptance.

@servicememeai
servicememeai merged commit 31a51f3 into dev Oct 20, 2026
7 checks passed
@opendev9
opendev9 deleted the fix/v2/staging-gc-20261020 branch October 21, 2026 00:50
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.

2 participants