From b46a4c7772e1f3e05ff6f145081ae3b8bc2ec419 Mon Sep 17 00:00:00 2001 From: N Date: Thu, 24 Jul 2025 00:21:49 +0800 Subject: [PATCH] pebble fix --- ethdb/pebble/pebble.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ethdb/pebble/pebble.go b/ethdb/pebble/pebble.go index 58a521f6fb..e2cb55c398 100644 --- a/ethdb/pebble/pebble.go +++ b/ethdb/pebble/pebble.go @@ -18,6 +18,7 @@ package pebble import ( + "errors" "fmt" "runtime" "strings" @@ -121,12 +122,14 @@ func (d *Database) onCompactionBegin(info pebble.CompactionInfo) { } func (d *Database) onCompactionEnd(info pebble.CompactionInfo) { - if d.activeComp == 1 { + switch d.activeComp { + case 1: d.compTime.Add(int64(time.Since(d.compStartTime))) - } else if d.activeComp == 0 { + case 0: panic("should not happen") + default: + d.activeComp-- } - d.activeComp-- } func (d *Database) onWriteStallBegin(b pebble.WriteStallBeginInfo) { @@ -690,24 +693,25 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error { } // The (k,v) slices might be overwritten if the batch is reset/reused, // and the receiver should copy them if they are to be retained long-term. - if kind == pebble.InternalKeyKindSet { + switch kind { + case pebble.InternalKeyKindSet: if err = w.Put(k, v); err != nil { return err } - } else if kind == pebble.InternalKeyKindDelete { + case pebble.InternalKeyKindDelete: if err = w.Delete(k); err != nil { return err } - } else if kind == pebble.InternalKeyKindRangeDelete { + case pebble.InternalKeyKindRangeDelete: // For range deletion, k is the start key and v is the end key if rangeDeleter, ok := w.(ethdb.KeyValueRangeDeleter); ok { if err = rangeDeleter.DeleteRange(k, v); err != nil { return err } } else { - return fmt.Errorf("ethdb.KeyValueWriter does not implement DeleteRange") + return errors.New("ethdb.KeyValueWriter does not implement DeleteRange") } - } else { + default: return fmt.Errorf("unhandled operation, keytype: %v", kind) } }