magicblock-labs / magicblock-labs/magicblock-validator

Define committor shutdown behavior with durable recovery

Open
#1,262 1 comment 0 reactions 1 assignee View on GitHub

@snawaz is already working on this.

Since Sep 9, 2026.

  • #1368 by @taco-paco — open
enhancement
Dominant language
Rust
Stars
58
Forks
58
Avg merge
22h 1m
Merged PRs (30d)
53

Description

## Goal

Define committor shutdown behavior when accepted work cannot finish draining, without losing recoverable progress or leaving callers waiting for results that will never arrive.

## Why

Current `dev` already [stops ingress and drains results](https://github.com/magicblock-labs/magicblock-validator/blob/073cd6e6a22b1a919119ec4241db08bb2abab932/magicblock-committor-service/src/service.rs#L120-L144). The remaining question is what happens when that drain cannot complete. Interrupting a submitted transaction does not establish whether it executed on base.

## Scope

Choose and document the drain/deadline policy, including what ends a drain and what callers observe at that boundary. Whether to keep waiting or stop after a deadline is a design decision, not a requirement to wait indefinitely or abort immediately.

Build on the contracts owned by the #1701 workstreams:

- #1702 supplies durable progress and transaction reconciliation after interruption. Define which accepted work remains recoverable at shutdown and reuse that mechanism to reconcile submitted transactions before retrying; do not introduce another recovery path.
- #1704 gives already-scheduled dependents failure results, but new admission-time rejections receive no result broadcast. Shutdown accounting must distinguish them rather than wait for notifications that cannot arrive.
- #1705 moves admission and result-subscription ownership into the committor processor. Align stopping ingress, tracking accepted work, and ending result observation with that ownership, and make completion, rejection, and interrupted waits clear to callers.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.