hiero-ledger / hiero-ledger/hiero-consensus-node

CN 0.72.0 node update transaction cause `CATASTROPHIC failure trying to reconcile TSS state`

Open
#24,642 1 comment 0 reactions 1 assignee Claimed by @derektriley View on GitHub
Blocker Bug
Dominant language
Java
Stars
406
Forks
226
Avg merge
3d 4h
Merged PRs (30d)
210

Description

When running following steps with solo for CN 0.72.0 + BN 0.29.0, node update transaction would cause exception in hgcaa.log

```
#!/bin/bash
set -eo pipefail

export SOLO_CLUSTER_NAME=solo
export SOLO_NAMESPACE=solo
export SOLO_CLUSTER_SETUP_NAMESPACE=solo-cluster
export SOLO_DEPLOYMENT=solo-deployment
export NODE_ALIASES="node1,node2"

kind delete cluster --name "${SOLO_CLUSTER_NAME}" >/dev/null 2>&1 || true
kind create cluster -n "${SOLO_CLUSTER_NAME}"
rm -rf "${HOME}/.solo/"

npm run solo-test -- init
npm run solo-test -- cluster-ref config connect --cluster-ref kind-${SOLO_CLUSTER_NAME} --context kind-${SOLO_CLUSTER_NAME}
npm run solo-test -- deployment config create -n "${SOLO_NAMESPACE}" --deployment "${SOLO_DEPLOYMENT}"
npm run solo-test -- deployment cluster attach --deployment "${SOLO_DEPLOYMENT}" --cluster-ref kind-${SOLO_CLUSTER_NAME} --num-consensus-nodes 2
npm run solo-test -- cluster-ref config setup -s "${SOLO_CLUSTER_SETUP_NAMESPACE}"
npm run solo-test -- block node add --deployment "${SOLO_DEPLOYMENT}"
npm run solo-test -- keys consensus generate --gossip-keys --tls-keys --deployment "${SOLO_DEPLOYMENT}" -i "${NODE_ALIASES}"
npm run solo-test -- consensus network deploy --deployment "${SOLO_DEPLOYMENT}" -i "${NODE_ALIASES}"
npm run solo-test -- consensus node setup --deployment "${SOLO_DEPLOYMENT}" -i "${NODE_ALIASES}"
npm run solo-test -- consensus node start --deployment "${SOLO_DEPLOYMENT}" -i "${NODE_ALIASES}"
npm run solo-test -- consensus node add --deployment "${SOLO_DEPLOYMENT}"
```

### Hgcaa.log:

```
2026-03-31 03:27:36.423 ERROR 351 HandleWorkflow - Possibly CATASTROPHIC failure trying to reconcile TSS state
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:220)
at com.hedera.node.app.history.impl.WrapsHistoryProver.publishIfNeeded(WrapsHistoryProver.java:407)
at com.hedera.node.app.history.impl.WrapsHistoryProver.advance(WrapsHistoryProver.java:261)
at com.hedera.node.app.history.impl.ProofControllerImpl.advanceConstruction(ProofControllerImpl.java:207)
at com.hedera.node.app.history.impl.HistoryServiceImpl.reconcile(HistoryServiceImpl.java:99)
at com.hedera.node.app.workflows.handle.HandleWorkflow.lambda$reconcileTssState$12(HandleWorkflow.java:1163)
at com.hedera.node.app.workflows.handle.HandleWorkflow.doStreamingChangesInternal(HandleWorkflow.java:953)
at com.hedera.node.app.workflows.handle.HandleWorkflow.doStreamingOnlyKvChanges(HandleWorkflow.java:930)
at com.hedera.node.app.workflows.handle.HandleWorkflow.reconcileTssState(HandleWorkflow.java:1160)
at com.hedera.node.app.workflows.handle.HandleWorkflow.handleRound(HandleWorkflow.java:349)
at com.hedera.node.app.Hedera.onHandleConsensusRound(Hedera.java:1048)
at com.swirlds.platform.eventhandling.DefaultTransactionHandler.doHandleConsensusRound(DefaultTransactionHandler.java:264)
at com.swirlds.platform.eventhandling.DefaultTransactionHandler.handleConsensusRound(DefaultTransactionHandler.java:233)
at com.swirlds.component.framework.component.ComponentWiring.lambda$bind$7(ComponentWiring.java:665)
at com.swirlds.component.framework.wires.input.BindableInputWire.lambda$bind$1(BindableInputWire.java:96)
at com.swirlds.component.framework.schedulers.internal.SequentialThreadTask.handle(SequentialThreadTask.java:19)
at com.swirlds.component.framework.schedulers.internal.SequentialThreadTaskScheduler.run(SequentialThreadTaskScheduler.java:193)
at java.base/java.lang.Thread.run(Thread.java:1474)
2026-03-31 03:27:36.482 INFO 401 WrapsHistoryProver - Considering publication of WRAPS R1 output on construction #2
2026-03-31 03:27:36.482 ERROR 351 HandleWorkflow - Possibly CATASTROPHIC failure trying to reconcile TSS state
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:220)
at com.hedera.node.app.history.impl.WrapsHistoryProver.publishIfNeeded(WrapsHistoryProver.java:407)
at com.hedera.node.app.history.impl.WrapsHistoryProver.advance(WrapsHistoryProver.java:261)
at com.hedera.node.app.history.impl.ProofControllerImpl.advanceConstruction(ProofControllerImpl.java:207)
at com.hedera.node.app.history.impl.HistoryServiceImpl.reconcile(HistoryServiceImpl.java:99)
at com.hedera.node.app.workflows.handle.HandleWorkflow.lambda$reconcileTssState$12(HandleWorkflow.java:1163)
at com.hedera.node.app.workflows.handle.HandleWorkflow.doStreamingChangesInternal(HandleWorkflow.java:953)
at com.hedera.node.app.workflows.handle.HandleWorkflow.doStreamingOnlyKvChanges(HandleWorkflow.java:930)
at com.hedera.node.app.workflows.handle.HandleWorkflow.reconcileTssState(HandleWorkflow.java:1160)
at com.hedera.node.app.workflows.handle.HandleWorkflow.handleRound(HandleWorkflow.java:349)
at com.hedera.node.app.Hedera.onHandleConsensusRound(Hedera.java:1048)
at com.swirlds.platform.eventhandling.DefaultTransactionHandler.doHandleConsensusRound(DefaultTransactionHandler.java:264)
at com.swirlds.platform.eventhandling.DefaultTransactionHandler.handleConsensusRound(DefaultTransactionHandler.java:233)
at com.swirlds.component.framework.component.ComponentWiring.lambda$bind$7(ComponentWiring.java:665)
at com.swirlds.component.framework.wires.input.BindableInputWire.lambda$bind$1(BindableInputWire.java:96)
at com.swirlds.component.framework.schedulers.internal.SequentialThreadTask.handle(SequentialThreadTask.java:19)
at com.swirlds.component.framework.schedulers.internal.SequentialThreadTaskScheduler.run(SequentialThreadTaskScheduler.java:193)
at java.base/java.lang.Thread.run(Thread.java:1474)
```

[hgcaa-1.log](https://github.com/user-attachments/files/26367061/hgcaa-1.log)

### Summary

NodeCreateTransaction submits with Status.Success
Node1 tries to reconcile TSS state for the pending new node3 on each round → NPE
Because TSS reconciliation fails, the roster is never updated to include node3

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.