Repository navigation
Conversation
GET /api/system/external-payload-cleanup reports the namespace's cleanup metrics. POST .../pass renews expired completion-upload allowances whose activity can still complete and drops the rest, then reclaims the namespace's expired, unclaimed references under their object locks: a shared object keeps its file, a sole reference deletes it. Each pass is recorded in the namespace's totals; a blocked reference answers 207. Native deletes through the local driver only, honours a backup hold that PHP left active, and treats a missing hold row as no hold.
Locally, published PHP on SQLite refused a namespace delete with its retryable 503 backend_lock_pressure in two of four parity runs, and a storage diagnostic with a retryable 503 in two. The namespace-delete and payload-cleanup probes now retry lock pressure through the shared middleware, and the storage diagnostic retries a retryable 503 up to ten times.
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #325. Stacked on #685 (Prometheus summary), on #684, on train #675.
Summary
Native now serves the external payload cleanup routes as published Server 2.11 does. Operators use them to reclaim abandoned payload uploads.
GET /api/system/external-payload-cleanup: the namespace's cleanup metrics (expired backlog, batch bounds, totals and last pass). Native already reported these inside operator metrics.POST /api/system/external-payload-cleanup/passtakeslimit(nullable|integer|min:1|max:1000, default 100). It then:Decisions
Fixture first, and probe hardening
The
payload-cleanupfixture covers the status, passes, recorded totals and limit validation. Every answer was checked against a fresh published 2.11.1 server. Deletion needs expired rows and stored objects, which an HTTP probe cannot create within the abandoned-upload period. Native tests on SQLite, PostgreSQL and MySQL cover it instead: shared, live and retained references, the limit and backlog, an active backup hold, a disabled policy, and an allowance renewed while its activity runs and dropped after it completes.Locally, published PHP on SQLite refused a namespace delete with its retryable 503
backend_lock_pressurein two of four parity runs, and a storage diagnostic with a retryable 503 in two. The namespace-delete and payload-cleanup probes now retry lock pressure through the shared middleware. The storage diagnostic retries a retryable 503 up to ten times.Verification
payload-cleanup. Published PHP differed only onnamespace-delete(the 503 above, before the retry).--all-targets: 652 passed. The new tests pass on PostgreSQL and MySQL too.