mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-01-19 05:45:21 +01:00
channeldb: check for tombstone before opening DB
To avoid running a channel DB that was successfully migrated to another system by accident, we check if there is a tombstone marker before we open the DB for use.
This commit is contained in:
parent
7e76326b97
commit
fc2d652261
@ -436,6 +436,11 @@ func (d *DB) Wipe() error {
|
||||
// the database are created.
|
||||
func initChannelDB(db kvdb.Backend) error {
|
||||
err := kvdb.Update(db, func(tx kvdb.RwTx) error {
|
||||
// Check if DB was marked as inactive with a tomb stone.
|
||||
if err := EnsureNoTombstone(tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
meta := &Meta{}
|
||||
// Check if DB is already initialized.
|
||||
err := FetchMeta(meta, tx)
|
||||
|
@ -681,4 +681,9 @@ func TestMarkerAndTombstone(t *testing.T) {
|
||||
// cannot be used anymore.
|
||||
err = db.View(EnsureNoTombstone, func() {})
|
||||
require.ErrorContains(t, err, string(tombstoneText))
|
||||
|
||||
// Now that the DB has a tombstone, we should no longer be able to open
|
||||
// it once we close it.
|
||||
_, err = CreateWithBackend(db.Backend)
|
||||
require.ErrorContains(t, err, string(tombstoneText))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user