Skip to content

Commit ee0d8e4

Browse files
authored
Merge pull request #1023 from ellemouton/sql25
[sql-25] firewalldb: start cleaning up RulesDB/KVStores code
2 parents 70143dc + 5dd0479 commit ee0d8e4

14 files changed

+382
-273
lines changed

config_dev.go

+32-19
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
package terminal
44

55
import (
6+
"fmt"
67
"path/filepath"
78

89
"github.com/lightninglabs/lightning-terminal/accounts"
910
"github.com/lightninglabs/lightning-terminal/db"
11+
"github.com/lightninglabs/lightning-terminal/firewalldb"
1012
"github.com/lightninglabs/lightning-terminal/session"
1113
"github.com/lightningnetwork/lnd/clock"
1214
)
@@ -87,7 +89,7 @@ func NewStores(cfg *Config, clock clock.Clock) (*stores, error) {
8789
networkDir = filepath.Join(cfg.LitDir, cfg.Network)
8890
acctStore accounts.Store
8991
sessStore session.Store
90-
closeFn func() error
92+
closeFns = make(map[string]func() error)
9193
)
9294

9395
switch cfg.DatabaseBackend {
@@ -106,7 +108,7 @@ func NewStores(cfg *Config, clock clock.Clock) (*stores, error) {
106108

107109
acctStore = accounts.NewSQLStore(sqlStore.BaseDB, clock)
108110
sessStore = session.NewSQLStore(sqlStore.BaseDB, clock)
109-
closeFn = sqlStore.BaseDB.Close
111+
closeFns["sqlite"] = sqlStore.BaseDB.Close
110112

111113
case DatabaseBackendPostgres:
112114
sqlStore, err := db.NewPostgresStore(cfg.Postgres)
@@ -116,7 +118,7 @@ func NewStores(cfg *Config, clock clock.Clock) (*stores, error) {
116118

117119
acctStore = accounts.NewSQLStore(sqlStore.BaseDB, clock)
118120
sessStore = session.NewSQLStore(sqlStore.BaseDB, clock)
119-
closeFn = sqlStore.BaseDB.Close
121+
closeFns["postgres"] = sqlStore.BaseDB.Close
120122

121123
default:
122124
accountStore, err := accounts.NewBoltStore(
@@ -126,35 +128,46 @@ func NewStores(cfg *Config, clock clock.Clock) (*stores, error) {
126128
if err != nil {
127129
return nil, err
128130
}
131+
closeFns["bbolt-accounts"] = accountStore.Close
129132

130133
sessionStore, err := session.NewDB(
131134
networkDir, session.DBFilename, clock, accountStore,
132135
)
133136
if err != nil {
134137
return nil, err
135138
}
139+
closeFns["bbolt-sessions"] = sessionStore.Close
136140

137141
acctStore = accountStore
138142
sessStore = sessionStore
139-
closeFn = func() error {
140-
var returnErr error
141-
err = accountStore.Close()
142-
if err != nil {
143-
returnErr = err
144-
}
145-
146-
err = sessionStore.Close()
147-
if err != nil {
148-
returnErr = err
149-
}
143+
}
150144

151-
return returnErr
152-
}
145+
firewallBoltDB, err := firewalldb.NewBoltDB(
146+
networkDir, firewalldb.DBFilename, sessStore,
147+
)
148+
if err != nil {
149+
return nil, fmt.Errorf("error creating firewall BoltDB: %v",
150+
err)
153151
}
152+
closeFns["bbolt-firewalldb"] = firewallBoltDB.Close
154153

155154
return &stores{
156-
accounts: acctStore,
157-
sessions: sessStore,
158-
close: closeFn,
155+
accounts: acctStore,
156+
sessions: sessStore,
157+
firewall: firewalldb.NewDB(firewallBoltDB),
158+
firewallBolt: firewallBoltDB,
159+
close: func() error {
160+
var returnErr error
161+
for storeName, fn := range closeFns {
162+
err := fn()
163+
if err != nil {
164+
log.Errorf("error closing %s store: %v",
165+
storeName, err)
166+
returnErr = err
167+
}
168+
}
169+
170+
return returnErr
171+
},
159172
}, nil
160173
}

config_prod.go

+22-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"path/filepath"
88

99
"github.com/lightninglabs/lightning-terminal/accounts"
10+
"github.com/lightninglabs/lightning-terminal/firewalldb"
1011
"github.com/lightninglabs/lightning-terminal/session"
1112
"github.com/lightningnetwork/lnd/clock"
1213
)
@@ -46,18 +47,37 @@ func NewStores(cfg *Config, clock clock.Clock) (*stores, error) {
4647
err)
4748
}
4849

50+
firewallDB, err := firewalldb.NewBoltDB(
51+
networkDir, firewalldb.DBFilename, sessStore,
52+
)
53+
if err != nil {
54+
return nil, fmt.Errorf("error creating firewall DB: %v", err)
55+
}
56+
4957
return &stores{
50-
accounts: acctStore,
51-
sessions: sessStore,
58+
accounts: acctStore,
59+
sessions: sessStore,
60+
firewallBolt: firewallDB,
61+
firewall: firewalldb.NewDB(firewallDB),
5262
close: func() error {
5363
var returnErr error
5464
if err := acctStore.Close(); err != nil {
5565
returnErr = fmt.Errorf("error closing "+
5666
"account store: %v", err)
67+
68+
log.Error(returnErr.Error())
5769
}
5870
if err := sessStore.Close(); err != nil {
5971
returnErr = fmt.Errorf("error closing "+
6072
"session store: %v", err)
73+
74+
log.Error(returnErr.Error())
75+
}
76+
if err := firewallDB.Close(); err != nil {
77+
returnErr = fmt.Errorf("error closing "+
78+
"firewall DB: %v", err)
79+
80+
log.Error(returnErr.Error())
6181
}
6282

6383
return returnErr

firewalldb/actions.go

+9-7
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ type Action struct {
117117
}
118118

119119
// AddAction serialises and adds an Action to the DB under the given sessionID.
120-
func (db *DB) AddAction(sessionID session.ID, action *Action) (uint64, error) {
120+
func (db *BoltDB) AddAction(sessionID session.ID, action *Action) (uint64,
121+
error) {
122+
121123
var buf bytes.Buffer
122124
if err := SerializeAction(&buf, action); err != nil {
123125
return 0, err
@@ -231,7 +233,7 @@ func getAction(actionsBkt *bbolt.Bucket, al *ActionLocator) (*Action, error) {
231233

232234
// SetActionState finds the action specified by the ActionLocator and sets its
233235
// state to the given state.
234-
func (db *DB) SetActionState(al *ActionLocator, state ActionState,
236+
func (db *BoltDB) SetActionState(al *ActionLocator, state ActionState,
235237
errorReason string) error {
236238

237239
if errorReason != "" && state != ActionStateError {
@@ -293,7 +295,7 @@ type ListActionsFilterFn func(a *Action, reversed bool) (bool, bool)
293295
// The indexOffset and maxNum params can be used to control the number of
294296
// actions returned. The return values are the list of actions, the last index
295297
// and the total count (iff query.CountTotal is set).
296-
func (db *DB) ListActions(filterFn ListActionsFilterFn,
298+
func (db *BoltDB) ListActions(filterFn ListActionsFilterFn,
297299
query *ListActionsQuery) ([]*Action, uint64, uint64, error) {
298300

299301
var (
@@ -345,7 +347,7 @@ func (db *DB) ListActions(filterFn ListActionsFilterFn,
345347

346348
// ListSessionActions returns a list of the given session's Actions that pass
347349
// the filterFn requirements.
348-
func (db *DB) ListSessionActions(sessionID session.ID,
350+
func (db *BoltDB) ListSessionActions(sessionID session.ID,
349351
filterFn ListActionsFilterFn, query *ListActionsQuery) ([]*Action,
350352
uint64, uint64, error) {
351353

@@ -391,7 +393,7 @@ func (db *DB) ListSessionActions(sessionID session.ID,
391393
// pass the filterFn requirements.
392394
//
393395
// TODO: update to allow for pagination.
394-
func (db *DB) ListGroupActions(ctx context.Context, groupID session.ID,
396+
func (db *BoltDB) ListGroupActions(ctx context.Context, groupID session.ID,
395397
filterFn ListActionsFilterFn) ([]*Action, error) {
396398

397399
if filterFn == nil {
@@ -589,7 +591,7 @@ type ActionReadDBGetter interface {
589591
}
590592

591593
// GetActionsReadDB is a method on DB that constructs an ActionsReadDB.
592-
func (db *DB) GetActionsReadDB(groupID session.ID,
594+
func (db *BoltDB) GetActionsReadDB(groupID session.ID,
593595
featureName string) ActionsReadDB {
594596

595597
return &allActionsReadDB{
@@ -601,7 +603,7 @@ func (db *DB) GetActionsReadDB(groupID session.ID,
601603

602604
// allActionsReadDb is an implementation of the ActionsReadDB.
603605
type allActionsReadDB struct {
604-
db *DB
606+
db *BoltDB
605607
groupID session.ID
606608
featureName string
607609
}

firewalldb/actions_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var (
4343
func TestActionStorage(t *testing.T) {
4444
tmpDir := t.TempDir()
4545

46-
db, err := NewDB(tmpDir, "test.db", nil)
46+
db, err := NewBoltDB(tmpDir, "test.db", nil)
4747
require.NoError(t, err)
4848
t.Cleanup(func() {
4949
_ = db.Close()
@@ -151,7 +151,7 @@ func TestActionStorage(t *testing.T) {
151151
func TestListActions(t *testing.T) {
152152
tmpDir := t.TempDir()
153153

154-
db, err := NewDB(tmpDir, "test.db", nil)
154+
db, err := NewBoltDB(tmpDir, "test.db", nil)
155155
require.NoError(t, err)
156156
t.Cleanup(func() {
157157
_ = db.Close()
@@ -353,7 +353,7 @@ func TestListGroupActions(t *testing.T) {
353353
index.AddPair(sessionID1, group1)
354354
index.AddPair(sessionID2, group1)
355355

356-
db, err := NewDB(t.TempDir(), "test.db", index)
356+
db, err := NewBoltDB(t.TempDir(), "test.db", index)
357357
require.NoError(t, err)
358358
t.Cleanup(func() {
359359
_ = db.Close()

0 commit comments

Comments
 (0)