feat: add Close method for resource cleanup in graceful shutdown (#16193)

Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
This commit is contained in:
yihuang 2023-05-18 04:04:43 +08:00 committed by GitHub
parent 46119d1384
commit 09ca393a19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 1 deletions

View File

@ -116,6 +116,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (x/staking) [#16068](https://github.com/cosmos/cosmos-sdk/pull/16068) Update simulation to allow non-EOA accounts to stake
* (store) [#16067](https://github.com/cosmos/cosmos-sdk/pull/16067) Add local snapshots management commands.
* (server) [#16142](https://github.com/cosmos/cosmos-sdk/pull/16142) Remove JSON Indentation from the GRPC to REST gateway's responses. (Saving bandwidth)
* (baseapp) [#16193](https://github.com/cosmos/cosmos-sdk/pull/16193) Add `Close` method to `BaseApp` for custom app to cleanup resource in graceful shutdown.
### State Machine Breaking

View File

@ -1031,3 +1031,8 @@ func NoOpProcessProposal() sdk.ProcessProposalHandler {
return abci.ResponseProcessProposal{Status: abci.ResponseProcessProposal_ACCEPT}
}
}
// Close is called in start cmd to gracefully cleanup resources.
func (app *BaseApp) Close() error {
return nil
}

View File

@ -2,6 +2,7 @@ package server
import (
"context"
"errors"
"fmt"
"io"
"net"
@ -260,7 +261,7 @@ func startStandAlone(svrCtx *Context, appCreator types.AppCreator) error {
// so we can gracefully stop the ABCI server.
<-ctx.Done()
svrCtx.Logger.Info("stopping the ABCI server...")
return svr.Stop()
return errors.Join(svr.Stop(), app.Close())
})
return g.Wait()
@ -366,6 +367,7 @@ func startInProcess(svrCtx *Context, clientCtx client.Context, appCreator types.
defer func() {
if tmNode != nil && tmNode.IsRunning() {
_ = tmNode.Stop()
_ = app.Close()
}
if traceWriterCleanup != nil {

View File

@ -58,6 +58,9 @@ type (
// Return the snapshot manager
SnapshotManager() *snapshots.Manager
// Close is called in start cmd to gracefully cleanup resources.
Close() error
}
// AppCreator is a function that allows us to lazily initialize an