Skip to content

Harden scheduling failover and state recording - #74

Merged
ivanvyd merged 1 commit into
mainfrom
codex/reliability-hardening-4.2
Sep 12, 2026
Merged

ivanvyd merged 1 commit into
mainfrom
codex/reliability-hardening-4.2

Conversation

@ivanvyd

@ivanvyd ivanvyd commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Slow or partial leader reconciliation could outlive its lease, stale durable schedules could survive failover, and several state mutations could overwrite concurrent updates. This change keeps lease renewal independent from bounded scheduler reconciliation, tracks partial work until cleanup succeeds, reconciles current persisted checker state in bulk, and makes history and uptime updates concurrency-safe.

It also validates scheduler-specific limits before replacing working schedules, preserves Healthie's leading-seconds cron meaning in Temporal, rejects Cronos extensions whose Temporal semantics differ, and uses Cosmos DB ReadManyItemsAsync for multi-state reads.

Validation:

  • dotnet restore Healthie.NET.sln --locked-mode
  • dotnet build Healthie.NET.sln --configuration Release --no-restore — 0 warnings, 0 errors
  • dotnet test tests/Healthie.Tests.Unit/Healthie.Tests.Unit.csproj --configuration Release --no-restore — 617 passed on net8.0; 617 passed on net10.0
  • dotnet list Healthie.NET.sln package --vulnerable --include-transitive — no vulnerable packages
  • Independent correctness, requirements, and performance reviews passed

No live Cosmos DB, Temporal, Hangfire, or Coravel backend was required for these unit-level paths; their request construction, parser behavior, concurrency boundaries, and failure handling are covered with deterministic tests and fakes.

@ivanvyd
ivanvyd merged commit 0fb077d into main Sep 12, 2026
7 of 8 checks passed
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