Skip to content

HAL-01 | panics in beginblock and endblock #3248

@juniuszhou

Description

@juniuszhou

Description

BeginBlocker and EndBlocker are optional methods module developers can implement in their module. They will be triggered at the beginning and at the end of each block, respectively, when the BeginBlock and EndBlock ABCI messages are received from the underlying consensus engine. Making use of panics for error handling in the BeginBlock and EndBlock methods
may cause the chain to halt if an error does occur.

Code Location:
x/clp/abci.go, Line 130
 130 panic ( err )

x/dispensation/abci.go, Lines 54-60
54 if err != nil {
55 panic ( fmt . Sprintf (" Unable to send %s coins to address %s", mintCoins . String () , ecoPoolAddress . String () ) )
56 }
57 err = k. AddMintAmount (ctx , mintCoins [0])
58 if err != nil {
59 panic ( err )
60 }

x/dispensation/abci.go, Lines 54-60
if err != nil {
55 panic ( fmt . Sprintf (" Unable to send %s coins to address %s", mintCoins . String () , ecoPoolAddress . String () ) )
56 }
57 err = k. AddMintAmount (ctx , mintCoins [0])
58 if err != nil {
59 panic ( err )
60 }

Recommendation

According to suggestion in the report, it is better to use error instead of panic. I don't agree on it. If the Sifchain runs into the situation that we shouldn't continue, panic and exit could be the right behavior. Otherwise the chain will be running at the wrong context. Stop it and fix the issue could be the right thing to do.

Metadata

Metadata

Assignees

Labels

Peggy 2.0An issue blocking the Peggy 2.0 releasePeggy TeamPeggy team task

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions