mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-07-25 04:12:29 +02:00
multi: warn user if they try to switch db types
Warn a user if they attempt to initialise a new db type (sqlite or postgres) if an old bbolt db file is found.
This commit is contained in:
committed by
Elle Mouton
parent
c89e5b68b0
commit
fe5254510e
@@ -830,7 +830,7 @@ func (d *DefaultDatabaseBuilder) BuildDatabase(
|
|||||||
cfg.Watchtower.TowerDir,
|
cfg.Watchtower.TowerDir,
|
||||||
cfg.registeredChains.PrimaryChain().String(),
|
cfg.registeredChains.PrimaryChain().String(),
|
||||||
lncfg.NormalizeNetwork(cfg.ActiveNetParams.Name),
|
lncfg.NormalizeNetwork(cfg.ActiveNetParams.Name),
|
||||||
), cfg.WtClient.Active, cfg.Watchtower.Active,
|
), cfg.WtClient.Active, cfg.Watchtower.Active, d.logger,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("unable to obtain database "+
|
return nil, nil, fmt.Errorf("unable to obtain database "+
|
||||||
|
35
lncfg/db.go
35
lncfg/db.go
@@ -3,13 +3,16 @@ package lncfg
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/btcsuite/btclog"
|
||||||
"github.com/lightningnetwork/lnd/kvdb"
|
"github.com/lightningnetwork/lnd/kvdb"
|
||||||
"github.com/lightningnetwork/lnd/kvdb/etcd"
|
"github.com/lightningnetwork/lnd/kvdb/etcd"
|
||||||
"github.com/lightningnetwork/lnd/kvdb/postgres"
|
"github.com/lightningnetwork/lnd/kvdb/postgres"
|
||||||
"github.com/lightningnetwork/lnd/kvdb/sqlbase"
|
"github.com/lightningnetwork/lnd/kvdb/sqlbase"
|
||||||
"github.com/lightningnetwork/lnd/kvdb/sqlite"
|
"github.com/lightningnetwork/lnd/kvdb/sqlite"
|
||||||
|
"github.com/lightningnetwork/lnd/lnrpc"
|
||||||
"github.com/lightningnetwork/lnd/lnwallet/btcwallet"
|
"github.com/lightningnetwork/lnd/lnwallet/btcwallet"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -221,7 +224,8 @@ type DatabaseBackends struct {
|
|||||||
// GetBackends returns a set of kvdb.Backends as set in the DB config.
|
// GetBackends returns a set of kvdb.Backends as set in the DB config.
|
||||||
func (db *DB) GetBackends(ctx context.Context, chanDBPath,
|
func (db *DB) GetBackends(ctx context.Context, chanDBPath,
|
||||||
walletDBPath, towerServerDBPath string, towerClientEnabled,
|
walletDBPath, towerServerDBPath string, towerClientEnabled,
|
||||||
towerServerEnabled bool) (*DatabaseBackends, error) {
|
towerServerEnabled bool, logger btclog.Logger) (*DatabaseBackends,
|
||||||
|
error) {
|
||||||
|
|
||||||
// We keep track of all the kvdb backends we actually open and return a
|
// We keep track of all the kvdb backends we actually open and return a
|
||||||
// reference to their close function so they can be cleaned up properly
|
// reference to their close function so they can be cleaned up properly
|
||||||
@@ -396,6 +400,15 @@ func (db *DB) GetBackends(ctx context.Context, chanDBPath,
|
|||||||
}
|
}
|
||||||
closeFuncs[NSWalletDB] = postgresWalletBackend.Close
|
closeFuncs[NSWalletDB] = postgresWalletBackend.Close
|
||||||
|
|
||||||
|
// Warn if the user is trying to switch over to a Postgres DB
|
||||||
|
// while there is a wallet or channel bbolt DB still present.
|
||||||
|
warnExistingBoltDBs(
|
||||||
|
logger, "postgres", walletDBPath, WalletDBName,
|
||||||
|
)
|
||||||
|
warnExistingBoltDBs(
|
||||||
|
logger, "postgres", chanDBPath, ChannelDBName,
|
||||||
|
)
|
||||||
|
|
||||||
returnEarly = false
|
returnEarly = false
|
||||||
|
|
||||||
return &DatabaseBackends{
|
return &DatabaseBackends{
|
||||||
@@ -489,6 +502,15 @@ func (db *DB) GetBackends(ctx context.Context, chanDBPath,
|
|||||||
}
|
}
|
||||||
closeFuncs[NSWalletDB] = sqliteWalletBackend.Close
|
closeFuncs[NSWalletDB] = sqliteWalletBackend.Close
|
||||||
|
|
||||||
|
// Warn if the user is trying to switch over to a sqlite DB
|
||||||
|
// while there is a wallet or channel bbolt DB still present.
|
||||||
|
warnExistingBoltDBs(
|
||||||
|
logger, "sqlite", walletDBPath, WalletDBName,
|
||||||
|
)
|
||||||
|
warnExistingBoltDBs(
|
||||||
|
logger, "sqlite", chanDBPath, ChannelDBName,
|
||||||
|
)
|
||||||
|
|
||||||
returnEarly = false
|
returnEarly = false
|
||||||
|
|
||||||
return &DatabaseBackends{
|
return &DatabaseBackends{
|
||||||
@@ -615,5 +637,16 @@ func (db *DB) GetBackends(ctx context.Context, chanDBPath,
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// warnExistingBoltDBs checks if there is an existing bbolt database in the
|
||||||
|
// given location and logs a warning if so.
|
||||||
|
func warnExistingBoltDBs(log btclog.Logger, dbType, dir, fileName string) {
|
||||||
|
if lnrpc.FileExists(filepath.Join(dir, fileName)) {
|
||||||
|
log.Warnf("Found existing bbolt database file in %s/%s while "+
|
||||||
|
"using database type %s. Existing data will NOT be "+
|
||||||
|
"migrated to %s automatically!", dir, fileName, dbType,
|
||||||
|
dbType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Compile-time constraint to ensure Workers implements the Validator interface.
|
// Compile-time constraint to ensure Workers implements the Validator interface.
|
||||||
var _ Validator = (*DB)(nil)
|
var _ Validator = (*DB)(nil)
|
||||||
|
Reference in New Issue
Block a user