Skip to content

Release cached directory identities with the last authority - #112

Closed
callumalpass wants to merge 1 commit into
mainfrom
fix/cache-storage-identity-lifetime
Closed

callumalpass wants to merge 1 commit into
mainfrom
fix/cache-storage-identity-lifetime

Conversation

@callumalpass

@callumalpass callumalpass commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Fix

  • Stop the derived-cache registry owning collection directory identity handles after the last authority closes. Windows capability handles intentionally deny delete sharing; a stale global key kept shutdown cleanup blocked until an unrelated acquisition pruned it.
  • Replace strong identity keys with weak cache owners. Identity and temporary derived storage now have one lifetime. Live aliases still share storage; reacquisition after final release gets fresh storage. No sharing-flag relaxation, destructor callback, API or shutdown-budget change.
  • Add deterministic last-owner release and cache-sharing/reacquisition regressions. The release test holds the registry mutex so unrelated acquisition cannot mask retention.

Qualification

  • Runtime-source qualification at 067962247d0b52888df4b44dfcd5a6e394821d65; current head 66268c84b1d4dfb385a40807ffb5a332edf1ab92 is its patch-identical rebase onto actual policy-only Preserve legacy YAML fidelity with one scoped maintenance-notice exception #113 merge 7ff91c4fe828a08b74dfc79918cbca34a9b1638f. All files except deny.toml are identical to the qualified source. Old implementation RED (retained identity count1), fixed GREEN. Real Connect shutdown fd regression also RED→GREEN; existing Windows assertion unchanged.
  • Local Rust via rcargo: workspace/all-target/all-feature clippy -D warnings, workspace/all-feature tests 801 passed / 4 existing ignored, docs -D warnings; fmt and architecture PASS. Spec fixtures pinned to eabae2143275a0619b02d564961fa74b8037185e. Live PostgreSQL not configured locally; mandatory CI PostgreSQL lane remains required.
  • Exact final head 66268c8: rcargo deny check passed advisories/bans/licenses/sources. Runtime qualification above carries across byte-identical runtime files, not an unchanged-source reassurance run.
  • Coordinator reviewed both upstream and dependent Connect diffs before merge; approved exact architecture adjustment +56 Rust lines (109806→109862), no new Rust files/public API, and tighter tempfile ownership count4→2.
  • Connect will pin the independently verified actual upstream merge SHA after required CI succeeds; no branch-head/candidate substitution. No deployment or package publication.

CI status

  • Run 39339612774 at exact 0679622: six jobs passed, including Windows/Linux/macOS, live PostgreSQL17, quality/features and packaging. Dependency policy failed on the unchanged dependency graph. Coordinator explicitly approved the single unmaintained-notice disposition separately in Preserve legacy YAML fidelity with one scoped maintenance-notice exception #113, now actually merged as 7ff91c4fe828a08b74dfc79918cbca34a9b1638f after all seven jobs passed. Parser/dependency/lockfile behavior remains untouched for migration fidelity. The authorized updated-head normal CI is required before this PR can merge; the dependent Connect pin remains held.

@callumalpass

Copy link
Copy Markdown
Owner Author

This PR was automatically closed by a reference in the description of #113; it was not merged. GitHub disallows reopening after the authorized branch rebase. Continuation: #114, using the same reviewed/qualified rebased head 66268c8 with no additional source changes. The dependent Connect pin must await the actual durability merge of that replacement PR, not this closed PR or the policy-only merge.

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