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:
Oliver Gugger committed 2022-10-13 09:45:07 +02:00
1 parent 7e76326b97
commit fc2d652261
2 files changed
+10

No files matched your search

+5
View File
@@ -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)
+5
View File
@@ -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))
}