Skip to content

Isolate unreadable tick history and keep dispatch faults recoverable - #135

Merged
PhiLily merged 1 commit into
mainfrom
tick-history-isolation
Oct 10, 2026
Merged

PhiLily merged 1 commit into
mainfrom
tick-history-isolation

Conversation

@PhiLily

@PhiLily PhiLily commented Oct 10, 2026

Copy link
Copy Markdown
Member

What and why:

Skip only the schedule whose tick history cannot be read, including settings-declared anchor history. Report schedule_tick_unreadable; do not treat that history as absent.

Keep workers alive after unexpected dispatch exceptions. Report schedule_dispatch_failed with a category and retry next pass. Emit schedule_dispatch_resumed after recovery.

Name rejected stored fields, skip maximum boundary counts, throttle boundary-heal failures and escape schedule names before logging.

Compatibility: previously tolerated rows (psycopg2 infinity values, mysqlclient zero dates, SQLite BLOB text values) can now be skipped. Stored reads consume more CPU; full reconciles use batched queries. Dispatch statement counts are unchanged. Batch wrappers need a time limit and failure monitoring, including for custom source store failures. A clean exit does not prove successful dispatch. Caller-owned transactions must roll back database-raised source-read errors. No migration is required.

Tests: new tests in tests/test_tick_history.py and tests/test_tick_history_worker.py; 302 tests pass on SQLite with the docs and reader tests, ruff and format are clean, and the llms-full check passes. CI runs the full matrix.

Changelog: not user-visible yet; the user-facing entry arrives with the release.

Skip schedules with unreadable tick history without abandoning other
schedules or treating history as absent. Retry dispatch after unexpected
exceptions and report failure categories and recovery.

Skip rejected stored values and maximum boundary counts. Throttle
boundary-heal diagnostics and escape schedule names in worker logs.

Check legacy driver-tolerated values before upgrading. Stored reads use
more CPU and reconciles use batched queries; dispatch statement counts
are unchanged. Batch workers now remain alive after unexpected dispatch
faults, including custom source failures. Wrappers need time limits and
failure monitoring. No migration is required.
@PhiLily
PhiLily merged commit 4027f76 into main Oct 10, 2026
38 checks passed
@PhiLily
PhiLily deleted the tick-history-isolation branch October 10, 2026 19:46
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