Skip to content

[fm] Guard alert creation with SitrepGuardedInsert.#10533

Open
mergeconflict wants to merge 1 commit into
mergeconflict/fm-sitrepguardedinsertfrom
mergeconflict/fm-sitrepguardedinsert-alerts
Open

[fm] Guard alert creation with SitrepGuardedInsert.#10533
mergeconflict wants to merge 1 commit into
mergeconflict/fm-sitrepguardedinsertfrom
mergeconflict/fm-sitrepguardedinsert-alerts

Conversation

@mergeconflict
Copy link
Copy Markdown
Contributor

@mergeconflict mergeconflict commented Jun 2, 2026

Wire the alert resource through SitrepGuardedInsert:

  • impl SitrepGuardedResource for Alert;
  • schema: alert_generation on fm_sitrep and the rendezvous_alert_created marker table (migration fm-alert-resource-deletion);
  • alert_create's FM path routes through the combinator, surfacing a stale sitrep as Error::Conflict;
  • SitrepBuilder tracks alert_generation, bumping it when the outstanding alert-request set changes; the closed-case carry-forward filter drops fully-satisfied closed cases and keeps those with unsatisfied alert requests;
  • fm_rendezvous reads the expected generation and aborts the alert loop on a stale mismatch; fm_analysis loads existing markers to drive carry-forward; omdb displays the new status fields and generation.

Context: #10248, builds on #10532. Note, garbage collection for rendezvous_alert_created rows is not in this PR, that should be coming later this week if all goes well.

@mergeconflict mergeconflict self-assigned this Jun 2, 2026
@mergeconflict mergeconflict added the fault-management Everything related to the fault-management initiative (RFD480 and others) label Jun 2, 2026
@mergeconflict mergeconflict force-pushed the mergeconflict/fm-sitrepguardedinsert-alerts branch from 1bc2f60 to 62cc3dd Compare June 2, 2026 19:32
Wire the alert resource through `SitrepGuardedInsert`:

  - `impl SitrepGuardedResource for Alert`;
  - schema: `alert_generation` on `fm_sitrep` and the
    `rendezvous_alert_created` marker table (migration
    fm-alert-resource-deletion);
  - `alert_create`'s FM path routes through the combinator, surfacing a
    stale sitrep as a monomorphic `Error::Conflict`;
  - `SitrepBuilder` tracks `alert_generation`, bumping it when the
    outstanding alert-request set changes; the closed-case carry-forward
    filter drops fully-satisfied closed cases;
  - fm_rendezvous reads the expected generation and aborts the alert loop
    on a stale mismatch; fm_analysis loads existing markers to drive
    carry-forward; omdb displays the new status fields and generation.
@mergeconflict mergeconflict force-pushed the mergeconflict/fm-sitrepguardedinsert branch from 6663e70 to c6e5904 Compare June 2, 2026 19:49
@mergeconflict mergeconflict force-pushed the mergeconflict/fm-sitrepguardedinsert-alerts branch from 62cc3dd to 3d5af68 Compare June 2, 2026 19:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fault-management Everything related to the fault-management initiative (RFD480 and others)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant