mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-22 07:08:14 +02: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:
@@ -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))
|
||||
}
|
||||
|
Reference in New Issue
Block a user