hyperledger / hyperledger/fabric-x-common

I-4: [proto] Checkpoint hold/halt feedback transport

Open
#134 0 comments 0 reactions 0 assignees View on GitHub
dependencies enhancement snapshot
Dominant language
Go
Stars
21
Forks
15
Avg merge
2d 19h
Merged PRs (30d)
20

Description

# PR-04 — fabric-x-common: checkpoint hold/halt feedback proto

**Repo**: `github.com/hyperledger/fabric-x-common` (NOT this repo)
**Tasks**: T058 (see `the feature task breakdown`).
**Depends on**: PR-01 (snapshot read protos exist).
**Blocks**: PR-05 (go.mod bump), and transitively PR-16 (coordinator hold/halt handling).

## Why this PR exists

`the applicable API contract` and `the feature design` describe checkpoint verify-before-commit feedback as **hold** (local hash not yet computed → coordinator pauses the checkpoint) and **halt** (checkpoint hash mismatch or non-recoverable local hash failure → coordinator stops processing and notifies the sidecar). This is prose only today: the `committerpb` `Status` enum has no `HOLD`/`HALT`, and there is **no VC→coordinator message** to carry the signal. PR-16 implements handling of a signal with no wire representation. This PR defines the transport in the shared module so PR-16 can consume it.

## Scope

Add a concrete VC→coordinator checkpoint-feedback transport, plus the coordinator→sidecar halt notification, to `committerpb`. Proto/generated code only.

- **T058** — define the feedback surface per `the applicable API contract` §2. Concretely:
- A `CheckpointFeedback` message (or an enum field on the existing VC→coordinator status/response reply) that expresses one of: `PROCEED`/none, `HOLD` (with the `TxHeight` the coordinator must wait on), `HALT` (with `TxHeight` + a reason string). Choose the representation that fits the existing VC→coordinator reply shape; document it in proto comments.
- The coordinator→sidecar **halt notification** signal (a field/message on the sidecar-facing feedback path) so the sidecar can stop submitting new transactions.

Keep this minimal and additive — do not repurpose the transaction `Status` enum used for per-TX commit results.

## Out of scope

- Coordinator/VC/sidecar behavior → PR-16 (this repo).
- Everything owned by PR-01/02/03.

## Verification

```bash
# in the fabric-x-common checkout
make proto
make build
git diff --stat # only proto + generated files changed
```

## Done criteria

- A concrete hold/halt transport (message or field) exists in `committerpb`, expressible as PROCEED/HOLD/HALT with the referenced `TxHeight` and a halt reason.
- Coordinator→sidecar halt-notification path defined.
- No committer behavior included.
- One coherent commit; PR opened; **advance the shared tag** PR-05 will pin.

---
Part of EPIC #571 — Snapshot and Checkpointing (tracking epic in fabric-x-committer).

Contributor guide

No contributing guide indexed for this repository

Research direction

In the fabric-x-common checkout, read the applicable API contract §2 and inspect the existing committerpb VC→coordinator reply and coordinator→sidecar feedback definitions. Run make proto and make build, then verify that only proto and generated files changed and that committerpb represents the required feedback and halt-notification paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, backend-api-design
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.