diff --git a/server/start.go b/server/start.go index d972ed3e5413..1c39d78c5c1d 100644 --- a/server/start.go +++ b/server/start.go @@ -780,7 +780,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 { @@ -800,13 +800,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