Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Avoid repeated scans of live KV rows on each mutation. Run bounded, non-overlapping batches with a cooldown and faster catch-up after a full batch. Keep pooled writes independent of housekeeping failures. Await cleanup inside caller-owned transactions so aborts cannot be reported as successful writes. Use the statement clock for writes and TTL checks so retained expired rows can be replaced and zero-TTL entries stay invisible before physical deletion. Fixes fedify-dev#1308 Assisted-by: OpenCode:deepseek-flash Assisted-by: Codex:gpt-6.1-sol Assisted-by: Codex:gpt-6-astra Assisted-by: Claude Code:claude-opus-5-5 Assisted-by: Claude Code:claude-fable-5-1
Codecov Report✅ All modified and coverable lines are covered by tests.
... and 1 file with indirect coverage changes 🚀 New features to boost your workflow:
|
e7753ea to
bba2b12
Compare
|
@coderabbitai full review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e7753ea43d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
✅ Action performedFull review finished. |
Reserved clients can run manual transactions without exposing savepoint(). Await their cleanup and propagate its errors so an aborted transaction cannot look like a successful mutation. Cover set/delete failures in manual transactions and shared cleanup error propagation without invoking client ownership methods. fedify-dev#1314 (comment) Assisted-by: Codex:gpt-6.1-sol
CTIDs identify rows only within one physical relation. Match both tableoid and CTID so partitioned and inherited tables cannot multiply one expiry batch. Retain the CTID array for targeted TID lookups. Resolve the shared lock from the logical table's row type rather than the first visible child row, keeping its identity stable across partitions, empty tables, and driver identifier transforms. Regressions cover overlapping CTIDs, catch-up batches, and parent locks on partitioned and inherited tables. Native PostgreSQL 16/18 plans retain TID scans with 79,000 live rows. fedify-dev#1314 (comment) Assisted-by: Codex:gpt-6.1-sol
|
@codex review |
|
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Each
PostgresKvStoremutation currently waits for an expiry sweep that can scan the entire table even when nothing has expired. Space out sweeps with a per-instance cooldown, cap each batch at 1,000 deletions, and retry sooner after a full batch to drain backlogs. A table-scoped advisory lock prevents overlapping sweeps across instances without a schema migration.Pooled writes no longer wait for cleanup, and cleanup failures are logged instead of failing the write. Caller-owned transactions still await cleanup and propagate errors so a rollback cannot look like a successful write. Refresh creation timestamps on replacement and use the statement clock throughout TTL checks so delayed deletion preserves expiry semantics.
Verified with PostgreSQL query-plan prototypes, Deno/Node.js/Bun regression tests, and
mise run check.Fixes #1308.