[bug] Consensus failure occurs when an authority is reserved before the grace period is over #38

Closed
opened 2024-07-18 20:54:01 +00:00 by dasanchez · 2 comments

Version: v0.1.0
Steps to reproduce:

  1. Start a chain with these registry parameters:
authority_auction_enabled: true
authority_aucton_commits_duration: “60s”
authority_aucton_reveals_duration: “60s”
authority_grace_period: “300s”
  1. Reserve an authority
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority reserve loro"
  1. Wait two minutes for revealsEndTime (grace period begins)
  2. Reserve the same authority
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority reserve loro"
  1. The chain halts when the original grace period ends
laconicd-1  | 8:50PM INF received complete proposal block hash=0B491D1AC0DB2BF79084597B4BA231F54E53DA58D5F97DA093CFFD37384381B1 height=192 module=consensus
laconicd-1  | 8:50PM INF finalizing commit of block hash=0B491D1AC0DB2BF79084597B4BA231F54E53DA58D5F97DA093CFFD37384381B1 height=192 module=consensus num_txs=0 root=88D7E46A2108B4C236D295791A1F09698B566C42A25B9603E55CC1EC063F4C8E
laconicd-1  | 8:50PM ERR error in proxyAppConn.FinalizeBlock err="collections: not found: key '2024-07-18 20:52:47.654860749 +0000 UTC' of type github.com/cosmos/gogoproto/cerc.registry.v1.ExpiryQueue" module=state
laconicd-1  | 8:50PM ERR CONSENSUS FAILURE!!! err="failed to apply block; error collections: not found: key '2024-07-18 20:52:47.654860749 +0000 UTC' of type github.com/cosmos/gogoproto/cerc.registry.v1.ExpiryQueue" module=consensus stack="goroutine 154 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x5e\ngithub.com/cometbft/cometbft/consensus.(*State).receiveRoutine.func2()\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:800 +0x46\npanic({0x21b0f00?, 0xc000fb9110?})\n\t/usr/local/go/src/runtime/panic.go:914 +0x21f\ngithub.com/cometbft/cometbft/consensus.(*State).finalizeCommit(0xc000154380, 0xc0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1779 +0xda5\ngithub.com/cometbft/cometbft/consensus.(*State).tryFinalizeCommit(0xc000154380, 0xc0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1681 +0x2f6\ngithub.com/cometbft/cometbft/consensus.(*State).enterCommit.func1()\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1616 +0x9c\ngithub.com/cometbft/cometbft/consensus.(*State).enterCommit(0xc000154380, 0xc0, 0x0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1654 +0xc5b\ngithub.com/cometbft/cometbft/consensus.(*State).addVote(0xc000154380, 0xc000b3bad0, {0x0, 0x0})\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:2323 +0x1d4d\ngithub.com/cometbft/cometbft/consensus.(*State).tryAddVote(0xc000154380, 0xc000b3bad0, {0x0?, 0x4bdad0?})\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:2055 +0x26\ngithub.com/cometbft/cometbft/consensus.(*State).handleMsg(0xc000154380, {{0x30ac0a0, 0xc0014a46f8}, {0x0, 0x0}})\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:928 +0x3ce\ngithub.com/cometbft/cometbft/consensus.(*State).receiveRoutine(0xc000154380, 0x0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:855 +0x4bc\ncreated by github.com/cometbft/cometbft/consensus.(*State).OnStart in goroutine 1\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:397 +0x10c\n"
laconicd-1  | 8:50PM INF service stop impl=baseWAL module=consensus msg="Stopping baseWAL service" wal=/root/.laconicd/data/cs.wal/wal
laconicd-1  | 8:50PM INF service stop impl=Group module=consensus msg="Stopping Group service" wal=/root/.laconicd/data/cs.wal/wal
laconicd-1  | 8:50PM INF Timed out dur=3000 height=192 module=consensus round=0 step=RoundStepPropose
laconicd-1  | 8:51PM INF Ensure peers module=pex numDialing=0 numInPeers=0 numOutPeers=0 numToDial=10
laconicd-1  | 8:51PM INF No addresses to dial. Falling back to seeds module=pex
Version: `v0.1.0` Steps to reproduce: 1. Start a chain with these registry parameters: ``` authority_auction_enabled: true authority_aucton_commits_duration: “60s” authority_aucton_reveals_duration: “60s” authority_grace_period: “300s” ``` 2. Reserve an authority ``` laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority reserve loro" ``` 3. Wait two minutes for revealsEndTime (grace period begins) 4. Reserve the same authority ``` laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry authority reserve loro" ``` 5. The chain halts when the original grace period ends ``` laconicd-1 | 8:50PM INF received complete proposal block hash=0B491D1AC0DB2BF79084597B4BA231F54E53DA58D5F97DA093CFFD37384381B1 height=192 module=consensus laconicd-1 | 8:50PM INF finalizing commit of block hash=0B491D1AC0DB2BF79084597B4BA231F54E53DA58D5F97DA093CFFD37384381B1 height=192 module=consensus num_txs=0 root=88D7E46A2108B4C236D295791A1F09698B566C42A25B9603E55CC1EC063F4C8E laconicd-1 | 8:50PM ERR error in proxyAppConn.FinalizeBlock err="collections: not found: key '2024-07-18 20:52:47.654860749 +0000 UTC' of type github.com/cosmos/gogoproto/cerc.registry.v1.ExpiryQueue" module=state laconicd-1 | 8:50PM ERR CONSENSUS FAILURE!!! err="failed to apply block; error collections: not found: key '2024-07-18 20:52:47.654860749 +0000 UTC' of type github.com/cosmos/gogoproto/cerc.registry.v1.ExpiryQueue" module=consensus stack="goroutine 154 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x5e\ngithub.com/cometbft/cometbft/consensus.(*State).receiveRoutine.func2()\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:800 +0x46\npanic({0x21b0f00?, 0xc000fb9110?})\n\t/usr/local/go/src/runtime/panic.go:914 +0x21f\ngithub.com/cometbft/cometbft/consensus.(*State).finalizeCommit(0xc000154380, 0xc0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1779 +0xda5\ngithub.com/cometbft/cometbft/consensus.(*State).tryFinalizeCommit(0xc000154380, 0xc0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1681 +0x2f6\ngithub.com/cometbft/cometbft/consensus.(*State).enterCommit.func1()\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1616 +0x9c\ngithub.com/cometbft/cometbft/consensus.(*State).enterCommit(0xc000154380, 0xc0, 0x0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:1654 +0xc5b\ngithub.com/cometbft/cometbft/consensus.(*State).addVote(0xc000154380, 0xc000b3bad0, {0x0, 0x0})\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:2323 +0x1d4d\ngithub.com/cometbft/cometbft/consensus.(*State).tryAddVote(0xc000154380, 0xc000b3bad0, {0x0?, 0x4bdad0?})\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:2055 +0x26\ngithub.com/cometbft/cometbft/consensus.(*State).handleMsg(0xc000154380, {{0x30ac0a0, 0xc0014a46f8}, {0x0, 0x0}})\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:928 +0x3ce\ngithub.com/cometbft/cometbft/consensus.(*State).receiveRoutine(0xc000154380, 0x0)\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:855 +0x4bc\ncreated by github.com/cometbft/cometbft/consensus.(*State).OnStart in goroutine 1\n\t/go/pkg/mod/github.com/cometbft/cometbft@v0.38.2/consensus/state.go:397 +0x10c\n" laconicd-1 | 8:50PM INF service stop impl=baseWAL module=consensus msg="Stopping baseWAL service" wal=/root/.laconicd/data/cs.wal/wal laconicd-1 | 8:50PM INF service stop impl=Group module=consensus msg="Stopping Group service" wal=/root/.laconicd/data/cs.wal/wal laconicd-1 | 8:50PM INF Timed out dur=3000 height=192 module=consensus round=0 step=RoundStepPropose laconicd-1 | 8:51PM INF Ensure peers module=pex numDialing=0 numInPeers=0 numOutPeers=0 numToDial=10 laconicd-1 | 8:51PM INF No addresses to dial. Falling back to seeds module=pex ```
dasanchez changed title from [bug] Consensus failure occurs when a name is reserved before the grace period is over to [bug] Consensus failure occurs when an authority is reserved before the grace period is over 2024-07-18 20:58:00 +00:00
ashwin was assigned by AFDudley 2024-07-18 21:07:26 +00:00
Member

@dasanchez Can you confirm if it works for you now?

@dasanchez Can you confirm if it works for you now?
Author

@prathamesh all good! I last tested it with v0.1.3 and it's fine now, thanks 👍

@prathamesh all good! I last tested it with v0.1.3 and it's fine now, thanks 👍
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: cerc-io/laconicd#38
No description provided.