Skip to content

Commit 18cddfb

Browse files
ggarriEnchanterIO
authored andcommitted
#94 Implement consensus db closing logic
1 parent 1e9df0d commit 18cddfb

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

consensus/node.go

+19-4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
tmtNode "github.com/tendermint/tendermint/node"
1414
tmtP2P "github.com/tendermint/tendermint/p2p"
1515
tmtCommon "github.com/tendermint/tendermint/libs/common"
16+
tmtDbm "github.com/tendermint/tendermint/libs/db"
1617
"github.com/prometheus/client_golang/prometheus"
1718
"github.com/lightstreams-network/lightchain/consensus/metrics"
1819
)
@@ -23,6 +24,7 @@ type Node struct {
2324
cfg *Config
2425
logger tmtLog.Logger
2526
metrics metrics.Metrics
27+
dbs map[string]tmtDbm.DB
2628
}
2729

2830
func NewNode(cfg *Config, registry *prometheus.Registry) (*Node, error) {
@@ -37,20 +39,21 @@ func NewNode(cfg *Config, registry *prometheus.Registry) (*Node, error) {
3739
if err != nil {
3840
return nil, err
3941
}
40-
42+
4143
var trackedMetrics metrics.Metrics
4244
if cfg.metrics {
4345
trackedMetrics = metrics.NewMetrics(registry)
4446
} else {
4547
trackedMetrics = metrics.NewNullMetrics()
4648
}
4749

48-
return &Node {
50+
return &Node{
4951
nil,
5052
nodeKey,
5153
cfg,
5254
logger,
5355
trackedMetrics,
56+
make(map[string]tmtDbm.DB),
5457
}, nil
5558
}
5659

@@ -68,7 +71,7 @@ func (n *Node) Start(ethRPCClient *ethRpc.Client, db *database.Database) error {
6871
n.nodeKey,
6972
proxy.NewLocalClientCreator(abci),
7073
tmtNode.DefaultGenesisDocProviderFunc(n.cfg.tendermintCfg),
71-
tmtNode.DefaultDBProvider,
74+
n.defaultDBProvider,
7275
tmtNode.DefaultMetricsProvider(n.cfg.tendermintCfg.Instrumentation),
7376
n.logger,
7477
)
@@ -103,6 +106,18 @@ func (n *Node) Stop() error {
103106
<-n.tendermint.Quit()
104107
n.logger.Info("Tendermint node stopped")
105108
}
109+
110+
for ctxID, db := range n.dbs {
111+
n.logger.Info(fmt.Sprintf("Closing database '%s'...", ctxID))
112+
db.Close()
113+
}
106114

107115
return nil
108-
}
116+
}
117+
118+
func (n *Node) defaultDBProvider(ctx *tmtNode.DBContext) (tmtDbm.DB, error) {
119+
dbType := tmtDbm.DBBackendType(ctx.Config.DBBackend)
120+
n.logger.Info(fmt.Sprintf("Loading database '%s'...", ctx.ID))
121+
n.dbs[ctx.ID] = tmtDbm.NewDB(ctx.ID, dbType, ctx.Config.DBDir())
122+
return n.dbs[ctx.ID], nil
123+
}

0 commit comments

Comments
 (0)