@@ -13,6 +13,7 @@ import (
13
13
tmtNode "github.com/tendermint/tendermint/node"
14
14
tmtP2P "github.com/tendermint/tendermint/p2p"
15
15
tmtCommon "github.com/tendermint/tendermint/libs/common"
16
+ tmtDbm "github.com/tendermint/tendermint/libs/db"
16
17
"github.com/prometheus/client_golang/prometheus"
17
18
"github.com/lightstreams-network/lightchain/consensus/metrics"
18
19
)
@@ -23,6 +24,7 @@ type Node struct {
23
24
cfg * Config
24
25
logger tmtLog.Logger
25
26
metrics metrics.Metrics
27
+ dbs map [string ]tmtDbm.DB
26
28
}
27
29
28
30
func NewNode (cfg * Config , registry * prometheus.Registry ) (* Node , error ) {
@@ -37,20 +39,21 @@ func NewNode(cfg *Config, registry *prometheus.Registry) (*Node, error) {
37
39
if err != nil {
38
40
return nil , err
39
41
}
40
-
42
+
41
43
var trackedMetrics metrics.Metrics
42
44
if cfg .metrics {
43
45
trackedMetrics = metrics .NewMetrics (registry )
44
46
} else {
45
47
trackedMetrics = metrics .NewNullMetrics ()
46
48
}
47
49
48
- return & Node {
50
+ return & Node {
49
51
nil ,
50
52
nodeKey ,
51
53
cfg ,
52
54
logger ,
53
55
trackedMetrics ,
56
+ make (map [string ]tmtDbm.DB ),
54
57
}, nil
55
58
}
56
59
@@ -68,7 +71,7 @@ func (n *Node) Start(ethRPCClient *ethRpc.Client, db *database.Database) error {
68
71
n .nodeKey ,
69
72
proxy .NewLocalClientCreator (abci ),
70
73
tmtNode .DefaultGenesisDocProviderFunc (n .cfg .tendermintCfg ),
71
- tmtNode . DefaultDBProvider ,
74
+ n . defaultDBProvider ,
72
75
tmtNode .DefaultMetricsProvider (n .cfg .tendermintCfg .Instrumentation ),
73
76
n .logger ,
74
77
)
@@ -103,6 +106,18 @@ func (n *Node) Stop() error {
103
106
<- n .tendermint .Quit ()
104
107
n .logger .Info ("Tendermint node stopped" )
105
108
}
109
+
110
+ for ctxID , db := range n .dbs {
111
+ n .logger .Info (fmt .Sprintf ("Closing database '%s'..." , ctxID ))
112
+ db .Close ()
113
+ }
106
114
107
115
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