Retry failed queued email notifications - #811
Merged
somethingwithproof merged 10 commits intoAug 18, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Implements retry semantics for queued email notifications in the Thold plugin by tracking delivery attempts and deferring reprocessing until a scheduled next_attempt, while exposing this state in the notification queue UI and adding a schema migration plus unit coverage.
Changes:
- Add
attempt_count/next_attempttracking and bounded exponential backoff logic for queued email delivery failures. - Ensure claim/drain queries skip notifications that are not yet eligible for retry.
- Add schema migration (1.8.3), UI columns, documentation, and focused unit tests.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| thold_notify.php | Claim only retry-eligible rows (next_attempt ready) before draining. |
| thold_functions.php | Add retry delay + delivery recorder; apply retry gating to queue drains; integrate recorder into send flow. |
| includes/database.php | Add 1.8.3 migration + table definition updates for attempt_count and next_attempt plus index. |
| notify_queue.php | Display attempt count and next retry time in the queue UI. |
| README.md | Document the queue retry behaviour. |
| INFO | Bump plugin version to 1.8.3. |
| CHANGELOG.md | Record the issue #784 retry feature. |
| tests/Unit/NotificationQueueRetryTest.php | Unit coverage for retry delay/recording and retry gating. |
| tests/Unit/NotificationQueueClaimTest.php | Update claim expectations to include retry gating clause. |
| tests/bootstrap-unit.php | Minor formatting/alignment update. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This was referenced Aug 18, 2026
…y' into fix/retry-notification-failures # Conflicts: # CHANGELOG.md # README.md # tests/Unit/NotificationQueueClaimTest.php # thold_notify.php
somethingwithproof
changed the base branch from
develop
to
fix/notification-claim-recovery
August 18, 2026 04:49
…ation-failures # Conflicts: # thold_functions.php
…ation-failures # Conflicts: # CHANGELOG.md # tests/Unit/NotificationQueueClaimTest.php # thold_functions.php
somethingwithproof
changed the base branch from
fix/notification-claim-recovery
to
develop
August 18, 2026 07:49
somethingwithproof
changed the base branch from
develop
to
fix/notification-claim-recovery
August 18, 2026 07:51
somethingwithproof
merged commit Aug 18, 2026
0661e29
into
Cacti:fix/notification-claim-recovery
5 checks passed
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.
Summary
Closes #784
Stack
This PR is intentionally based on #813. Notification ownership, leases, orphan recovery, and completion safety live only in #813; this PR adds retry policy and UI behavior on top.
Linux Docker validation
Overlap audit
No other open plugin_thold PR implements bounded queue retry policy, next-attempt scheduling, grouped retry bookkeeping, or retry UI status. The ownership implementation is not duplicated here because #813 is the explicit base.