fix: in-place-testnet edgecases (backport #19516) (#19526)

Co-authored-by: Adam Tucker <adam@osmosis.team>
This commit is contained in:
mergify[bot] 2024-02-23 01:27:45 +01:00 committed by GitHub
parent 7dbed2fc0c
commit aba4e2d0d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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 {
@ -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