{{ message }}
Repository navigation
feat(schedule): name the schedule a reconcile failure belongs to - #13746
Merged
Merged
Conversation
A reconcile failure reported the throwable and nothing else, so an error like "Collection not found" arrived carrying its region and no way to tell which of several thousand schedules produced it. Finding one meant writing a task to re-derive it from the database. utopia-php/schedule 0.3.0 passes the rejected row to the handler, so each of the three schedulers now tags the project, resource and schedule it was building -- the same attributes the enqueue path already records on the success side.
loks0n
approved these changes
Sep 17, 2026
Contributor
✨ Benchmark resultsComparing
Per-scenario breakdown & investigation detailsMetrics below reflect the current branch (after). Δ P95 compares against the base.
Top API waits (after) |
Row::id is the sequence Source\Database::rows() builds it from, while the enqueue path tags $schedule['$id']. Reporting the sequence under the same key sent operators looking for an id that is not on the document.
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.

What
Bumps
utopia-php/scheduleto^0.3.0and uses the row it now hands the error handler, so a reconcile failure tags the project, resource and schedule it was building.Same in
ScheduleFunctions,ScheduleExecutionsandScheduleMessages.Why
These failures arrive in Sentry as a message and a region and nothing else —
Collection not found,region = fra— for one of several thousand schedules. Identifying the row behind one of them meant writing a task to re-derive it from the database.The attributes are the same ones the enqueue path in
ScheduleFunctionsalready records on the success side:The error path simply never had the row to record them from. utopia-php/monorepo#296 (released as
schedule/0.3.0) passes it through.Dependency
^0.2.0→^0.3.0. Under caret semantics on0.xa minor bump is a breaking boundary, so this constraint change is required —0.3.0is otherwise not installable. The library change itself is backward compatible: PHP ignores the extra argument, so a one-parameter handler still works.Tests
None. There is no assertion to make here that would not be asserting the telemetry double against itself — the attributes either reach Sentry or they don't, and that is visible on the first failure after deploy. The three blocks are identical and the behaviour they add is guarded by a single
instanceof.composer lintpasses. PHPStan is clean on the three changed files; a repo-wide run is currently blocked by parse errors inapp/sdks/console-cli/internal/typegen/testdata/*.php, which are gitignored fixtures unrelated to this change.Follow-up
appwrite-labs/cloudhas a fourth handler,ScheduleBackups, which needs the same treatment once this is released.