Skip to content

[DO NOT MERGE] hotfix(1.3.0): coerce nil ProverAddresses — chain-halt CI build#314

Closed
raymondjacobson wants to merge 1 commit into
mainfrom
hotfix/v1.3.0-pos-nil-prover-addresses
Closed

[DO NOT MERGE] hotfix(1.3.0): coerce nil ProverAddresses — chain-halt CI build#314
raymondjacobson wants to merge 1 commit into
mainfrom
hotfix/v1.3.0-pos-nil-prover-addresses

Conversation

@raymondjacobson
Copy link
Copy Markdown
Contributor

Purpose

Do not merge this PR. It exists only to make CI build a Docker image of `v1.3.0` + the chain-halt fix from #313, so the resulting SHA-tagged image can be promoted to `:stable` manually.

Branch: `hotfix/v1.3.0-pos-nil-prover-addresses`
Base of branch: tag `v1.3.0` (`ad0b9b3`)
Cherry-picked from: #313 (`a0c179e`)

Diff against `v1.3.0` is a single one-file change in `pkg/core/server/pos.go`.

CI caveat

`ci.yml` runs on `pull_request` targeting `main` and uses `ref: ${{ github.ref }}` (the `refs/pull/N/merge` ref), so the image CI builds for this PR is actually `main + fix`, not `v1.3.0 + fix`. If you need a true `v1.3.0 + fix` image, we'll need a different path (e.g. add `workflow_dispatch` to `ci.yml` keyed on a branch name, or tag-then-retag via `tag-released.yml`).

Context

Prod chain halted at block 25229899 (2026-05-26 09:47:22 UTC). Every validator panics in `FinalizeBlock` for height 25229900 because a `StorageProof` tx in that block has nil `ProverAddresses`, which pgx serializes as SQL `NULL` and trips the `NOT NULL` constraint on `storage_proofs.prover_addresses`. Full root cause in #313.

🤖 Generated with Claude Code

…geProof

A StorageProof tx with empty/nil ProverAddresses caused pgx to serialize
the value as SQL NULL, violating the NOT NULL constraint on
storage_proofs.prover_addresses. That aborted the FinalizeBlock
transaction (SQLSTATE 25P02), Commit resolved to ROLLBACK, and CometBFT
panicked with CONSENSUS FAILURE — halting the chain deterministically on
every validator at block 25229900.

Coerce nil to []string{} before insert so the column receives '{}'
instead of NULL, allowing the block to commit on the next restart.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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