handle error

This commit is contained in:
maskpp 2024-08-28 23:43:05 +08:00
parent 941ae33d7e
commit e45024b9f6

View file

@ -293,7 +293,9 @@ func (d *Database) Has(key []byte) (bool, error) {
} else if err != nil { } else if err != nil {
return false, err return false, err
} }
closer.Close() if err = closer.Close(); err != nil {
return false, err
}
return true, nil return true, nil
} }
@ -308,10 +310,10 @@ func (d *Database) Get(key []byte) ([]byte, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
ret := make([]byte, len(dat)) if err = closer.Close(); err != nil {
copy(ret, dat) return nil, err
closer.Close() }
return ret, nil return common.CopyBytes(dat), nil
} }
// Put inserts the given value into the key-value store. // Put inserts the given value into the key-value store.
@ -518,17 +520,17 @@ type batch struct {
} }
// Put inserts the given value into the batch for later committing. // Put inserts the given value into the batch for later committing.
func (b *batch) Put(key, value []byte) error { func (b *batch) Put(key, value []byte) (err error) {
b.b.Set(key, value, nil) err = b.b.Set(key, value, nil)
b.size += len(key) + len(value) b.size += len(key) + len(value)
return nil return
} }
// Delete inserts the key removal into the batch for later committing. // Delete inserts the key removal into the batch for later committing.
func (b *batch) Delete(key []byte) error { func (b *batch) Delete(key []byte) (err error) {
b.b.Delete(key, nil) err = b.b.Delete(key, nil)
b.size += len(key) b.size += len(key)
return nil return
} }
// ValueSize retrieves the amount of data queued up for writing. // ValueSize retrieves the amount of data queued up for writing.
@ -553,7 +555,7 @@ func (b *batch) Reset() {
} }
// Replay replays the batch contents. // Replay replays the batch contents.
func (b *batch) Replay(w ethdb.KeyValueWriter) error { func (b *batch) Replay(w ethdb.KeyValueWriter) (bErr error) {
reader := b.b.Reader() reader := b.b.Reader()
for { for {
kind, k, v, ok, err := reader.Next() kind, k, v, ok, err := reader.Next()
@ -563,14 +565,14 @@ func (b *batch) Replay(w ethdb.KeyValueWriter) error {
// The (k,v) slices might be overwritten if the batch is reset/reused, // 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. // and the receiver should copy them if they are to be retained long-term.
if kind == pebble.InternalKeyKindSet { if kind == pebble.InternalKeyKindSet {
w.Put(k, v) bErr = w.Put(k, v)
} else if kind == pebble.InternalKeyKindDelete { } else if kind == pebble.InternalKeyKindDelete {
w.Delete(k) bErr = w.Delete(k)
} else { } else {
return fmt.Errorf("unhandled operation, keytype: %v", kind) return fmt.Errorf("unhandled operation, keytype: %v", kind)
} }
} }
return nil return
} }
// pebbleIterator is a wrapper of underlying iterator in storage engine. // pebbleIterator is a wrapper of underlying iterator in storage engine.