Skip to content

Commit

Permalink
fix: in-place-testnet edgecases (backport #19516) (#19526)
Browse files Browse the repository at this point in the history
Co-authored-by: Adam Tucker <[email protected]>
  • Loading branch information
mergify[bot] and czarcas7ic authored Feb 23, 2024
1 parent 7dbed2f commit aba4e2d
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@ func testnetify(ctx *Context, home string, testnetAppCreator types.AppCreator, d
cmtApp := NewCometABCIWrapper(testnetApp)
_, context := getCtx(ctx, true)
clientCreator := proxy.NewLocalClientCreator(cmtApp)
metrics := node.DefaultMetricsProvider(config.Instrumentation)
metrics := node.DefaultMetricsProvider(cmtcfg.DefaultConfig().Instrumentation)
_, _, _, _, proxyMetrics, _, _ := metrics(genDoc.ChainID)
proxyApp := proxy.NewAppConns(clientCreator, proxyMetrics)
if err := proxyApp.Start(); err != nil {
Expand All @@ -808,13 +808,21 @@ func testnetify(ctx *Context, home string, testnetAppCreator types.AppCreator, d
var block *cmttypes.Block
switch {
case appHeight == blockStore.Height():
// This state occurs when we stop the node with the halt height flag, and need to handle differently
state.LastBlockHeight++
block = blockStore.LoadBlock(blockStore.Height())
block.AppHash = appHash
state.AppHash = appHash
// If the state's last blockstore height does not match the app and blockstore height, we likely stopped with the halt height flag.
if state.LastBlockHeight != appHeight {
state.LastBlockHeight = appHeight
block.AppHash = appHash
state.AppHash = appHash
} else {
// Node was likely stopped via SIGTERM, delete the next block's seen commit
err := blockStoreDB.Delete([]byte(fmt.Sprintf("SC:%v", blockStore.Height()+1)))
if err != nil {
return nil, err
}
}
case blockStore.Height() > state.LastBlockHeight:
// This state occurs when we kill the node
// This state usually occurs when we gracefully stop the node.
err = blockStore.DeleteLatestBlock()
if err != nil {
return nil, err
Expand Down

0 comments on commit aba4e2d

Please sign in to comment.