Jelajahi Sumber

lib/db: Make err(Closed|NotFound) values (#8215)

greatroar 3 tahun lalu
induk
melakukan
d0fd6c6c82
2 mengubah file dengan 12 tambahan dan 22 penghapusan
  1. 7 17
      lib/db/backend/backend.go
  2. 5 5
      lib/db/backend/leveldb_backend.go

+ 7 - 17
lib/db/backend/backend.go

@@ -133,23 +133,13 @@ func OpenMemory() Backend {
 	return OpenLevelDBMemory()
 }
 
-type errClosed struct{}
-
-func (*errClosed) Error() string { return "database is closed" }
-
-type errNotFound struct{}
-
-func (*errNotFound) Error() string { return "key not found" }
-
-func IsClosed(err error) bool {
-	e := &errClosed{}
-	return errors.As(err, &e)
-}
+var (
+	errClosed   = errors.New("database is closed")
+	errNotFound = errors.New("key not found")
+)
 
-func IsNotFound(err error) bool {
-	e := &errNotFound{}
-	return errors.As(err, &e)
-}
+func IsClosed(err error) bool   { return errors.Is(err, errClosed) }
+func IsNotFound(err error) bool { return errors.Is(err, errNotFound) }
 
 // releaser manages counting on top of a waitgroup
 type releaser struct {
@@ -183,7 +173,7 @@ func (cg *closeWaitGroup) Add(i int) error {
 	cg.closeMut.RLock()
 	defer cg.closeMut.RUnlock()
 	if cg.closed {
-		return &errClosed{}
+		return errClosed
 	}
 	cg.WaitGroup.Add(i)
 	return nil

+ 5 - 5
lib/db/backend/leveldb_backend.go

@@ -223,11 +223,11 @@ func (it *leveldbIterator) Error() error {
 
 // wrapLeveldbErr wraps errors so that the backend package can recognize them
 func wrapLeveldbErr(err error) error {
-	if err == leveldb.ErrClosed {
-		return &errClosed{}
-	}
-	if err == leveldb.ErrNotFound {
-		return &errNotFound{}
+	switch err {
+	case leveldb.ErrClosed:
+		return errClosed
+	case leveldb.ErrNotFound:
+		return errNotFound
 	}
 	return err
 }