Skip to content

Commit 7513966

Browse files
authoredSep 19, 2024
ethdb/pebble: handle errors (ethereum#30367)
1 parent c4c2c4f commit 7513966

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed
 

‎ethdb/pebble/pebble.go

+19-8
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,9 @@ func (d *Database) Has(key []byte) (bool, error) {
293293
} else if err != nil {
294294
return false, err
295295
}
296-
closer.Close()
296+
if err = closer.Close(); err != nil {
297+
return false, err
298+
}
297299
return true, nil
298300
}
299301

@@ -310,7 +312,9 @@ func (d *Database) Get(key []byte) ([]byte, error) {
310312
}
311313
ret := make([]byte, len(dat))
312314
copy(ret, dat)
313-
closer.Close()
315+
if err = closer.Close(); err != nil {
316+
return nil, err
317+
}
314318
return ret, nil
315319
}
316320

@@ -519,14 +523,18 @@ type batch struct {
519523

520524
// Put inserts the given value into the batch for later committing.
521525
func (b *batch) Put(key, value []byte) error {
522-
b.b.Set(key, value, nil)
526+
if err := b.b.Set(key, value, nil); err != nil {
527+
return err
528+
}
523529
b.size += len(key) + len(value)
524530
return nil
525531
}
526532

527533
// Delete inserts the key removal into the batch for later committing.
528534
func (b *batch) Delete(key []byte) error {
529-
b.b.Delete(key, nil)
535+
if err := b.b.Delete(key, nil); err != nil {
536+
return err
537+
}
530538
b.size += len(key)
531539
return nil
532540
}
@@ -558,19 +566,22 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error {
558566
for {
559567
kind, k, v, ok, err := reader.Next()
560568
if !ok || err != nil {
561-
break
569+
return err
562570
}
563571
// The (k,v) slices might be overwritten if the batch is reset/reused,
564572
// and the receiver should copy them if they are to be retained long-term.
565573
if kind == pebble.InternalKeyKindSet {
566-
w.Put(k, v)
574+
if err = w.Put(k, v); err != nil {
575+
return err
576+
}
567577
} else if kind == pebble.InternalKeyKindDelete {
568-
w.Delete(k)
578+
if err = w.Delete(k); err != nil {
579+
return err
580+
}
569581
} else {
570582
return fmt.Errorf("unhandled operation, keytype: %v", kind)
571583
}
572584
}
573-
return nil
574585
}
575586

576587
// pebbleIterator is a wrapper of underlying iterator in storage engine.

0 commit comments

Comments
 (0)
Please sign in to comment.