Skip to content
This repository was archived by the owner on Jan 20, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions ss/pebbledb/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ func (db *Database) Has(storeKey string, version int64, key []byte) (bool, error
}

val, err := db.Get(storeKey, version, key)
if err != nil && !errors.Is(err, errorutils.ErrRecordNotFound) {
if err != nil {
return false, err
}

Expand All @@ -327,11 +327,15 @@ func (db *Database) Has(storeKey string, version int64, key []byte) (bool, error

func (db *Database) Get(storeKey string, targetVersion int64, key []byte) ([]byte, error) {
if targetVersion < db.earliestVersion {
return nil, errorutils.ErrRecordNotFound
return nil, nil
}

prefixedVal, err := getMVCCSlice(db.storage, storeKey, key, targetVersion)
if err != nil {
if errors.Is(err, errorutils.ErrRecordNotFound) {
return nil, nil
}

return nil, fmt.Errorf("failed to perform PebbleDB read: %w", err)
}

Expand All @@ -358,7 +362,7 @@ func (db *Database) Get(storeKey string, targetVersion int64, key []byte) ([]byt
}

// the value is considered deleted
return nil, errorutils.ErrRecordNotFound
return nil, nil
}

func (db *Database) ApplyChangeset(version int64, cs *proto.NamedChangeSet) error {
Expand Down
20 changes: 7 additions & 13 deletions ss/rocksdb/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ package rocksdb
import (
"bytes"
"encoding/binary"
"errors"
"fmt"
"sync"
"time"

"github.com/linxGnu/grocksdb"
errorutils "github.com/sei-protocol/sei-db/common/errors"
"github.com/sei-protocol/sei-db/common/errors"
"github.com/sei-protocol/sei-db/common/logger"
"github.com/sei-protocol/sei-db/common/utils"
"github.com/sei-protocol/sei-db/config"
Expand Down Expand Up @@ -212,7 +211,7 @@ func (db *Database) Has(storeKey string, version int64, key []byte) (bool, error
}

slice, err := db.getSlice(storeKey, version, key)
if err != nil && !errors.Is(err, errorutils.ErrRecordNotFound) {
if err != nil {
return false, err
}

Expand All @@ -221,19 +220,14 @@ func (db *Database) Has(storeKey string, version int64, key []byte) (bool, error

func (db *Database) Get(storeKey string, version int64, key []byte) ([]byte, error) {
if version < db.earliestVersion {
return nil, errorutils.ErrRecordNotFound
return nil, nil
}

slice, err := db.getSlice(storeKey, version, key)
if err != nil {
return nil, fmt.Errorf("failed to get RocksDB slice: %w", err)
}

if !slice.Exists() {
slice.Free()
return nil, errorutils.ErrRecordNotFound
}

return copyAndFreeSlice(slice), nil
}

Expand Down Expand Up @@ -330,11 +324,11 @@ func (db *Database) Prune(version int64) error {

func (db *Database) Iterator(storeKey string, version int64, start, end []byte) (types.DBIterator, error) {
if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) {
return nil, errorutils.ErrKeyEmpty
return nil, errors.ErrKeyEmpty
}

if start != nil && end != nil && bytes.Compare(start, end) > 0 {
return nil, errorutils.ErrStartAfterEnd
return nil, errors.ErrStartAfterEnd
}

prefix := storePrefix(storeKey)
Expand All @@ -346,11 +340,11 @@ func (db *Database) Iterator(storeKey string, version int64, start, end []byte)

func (db *Database) ReverseIterator(storeKey string, version int64, start, end []byte) (types.DBIterator, error) {
if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) {
return nil, errorutils.ErrKeyEmpty
return nil, errors.ErrKeyEmpty
}

if start != nil && end != nil && bytes.Compare(start, end) > 0 {
return nil, errorutils.ErrStartAfterEnd
return nil, errors.ErrStartAfterEnd
}

prefix := storePrefix(storeKey)
Expand Down
6 changes: 5 additions & 1 deletion ss/sqlite/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ func (db *Database) SetEarliestVersion(version int64, ignoreVersion bool) error

func (db *Database) Has(storeKey string, version int64, key []byte) (bool, error) {
val, err := db.Get(storeKey, version, key)
if err != nil && !errors.Is(err, errorutils.ErrRecordNotFound) {
if err != nil {
return false, err
}

Expand All @@ -172,6 +172,10 @@ func (db *Database) Get(storeKey string, targetVersion int64, key []byte) ([]byt
tomb int64
)
if err := stmt.QueryRow(storeKey, key, targetVersion).Scan(&value, &tomb); err != nil {
if errors.Is(err, sql.ErrNoRows) {
return nil, nil
}

return nil, fmt.Errorf("failed to query row: %w", err)
}

Expand Down
19 changes: 8 additions & 11 deletions ss/test/storage_test_suite.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"sync"

"github.com/cosmos/iavl"
errorutils "github.com/sei-protocol/sei-db/common/errors"
"github.com/sei-protocol/sei-db/config"
"github.com/sei-protocol/sei-db/ss/types"
"github.com/stretchr/testify/suite"
Expand Down Expand Up @@ -142,7 +141,7 @@ func (s *StorageTestSuite) TestDatabaseGetVersionedKey() {
// all queries after version 15 should return nil
for i := int64(15); i <= 17; i++ {
bz, err = db.Get(storeKey1, i, key)
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().NoError(err)
s.Require().Nil(bz)

ok, err = db.Has(storeKey1, i, key)
Expand Down Expand Up @@ -619,11 +618,10 @@ func (s *StorageTestSuite) TestDatabasePrune() {
val := fmt.Sprintf("val%03d-%03d", i, v)

bz, err := db.Get(storeKey1, v, []byte(key))
s.Require().NoError(err)
if v <= 25 {
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().Nil(bz)
} else {
s.Require().NoError(err)
s.Require().Equal([]byte(val), bz)
}
}
Expand All @@ -646,7 +644,7 @@ func (s *StorageTestSuite) TestDatabasePrune() {
key := fmt.Sprintf("key%03d", i)

bz, err := db.Get(storeKey1, v, []byte(key))
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().NoError(err)
s.Require().Nil(bz)
}
}
Expand Down Expand Up @@ -690,7 +688,7 @@ func (s *StorageTestSuite) TestDatabasePruneKeepRecent() {

// ensure queries for versions 50 and older return nil
bz, err := db.Get(storeKey1, 49, key)
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().Nil(err)
s.Require().Nil(bz)

itr, err := db.Iterator(storeKey1, 49, nil, nil)
Expand Down Expand Up @@ -738,11 +736,11 @@ func (s *StorageTestSuite) TestDatabasePruneKeepLastVersion() {

// Verify that all keys before prune height are deleted
bz, err := db.Get(storeKey1, 100, []byte("key000"))
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().NoError(err)
s.Require().Nil(bz)

bz, err = db.Get(storeKey1, 160, []byte("key001"))
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().NoError(err)
s.Require().Nil(bz)

// Verify keys after prune height can be retrieved
Expand Down Expand Up @@ -932,7 +930,7 @@ func (s *StorageTestSuite) TestParallelWriteAndPruning() {
// check if the data is pruned
version := int64(latestVersion - prunePeriod)
val, err := db.Get(storeKey1, version, []byte(fmt.Sprintf("key-%d-%03d", version-1, 0)))
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().Nil(err)
s.Require().Nil(val)

version = int64(latestVersion)
Expand Down Expand Up @@ -1142,11 +1140,10 @@ func (s *StorageTestSuite) TestParallelIterationAndPruning() {
val := fmt.Sprintf("val%03d-%03d", i, v)

bz, err := db.Get(storeKey1, v, []byte(key))
s.Require().NoError(err)
if v <= int64(latestVersion-numHeightsPruned) {
s.Require().ErrorIs(err, errorutils.ErrRecordNotFound)
s.Require().Nil(bz)
} else {
s.Require().NoError(err)
s.Require().Equal([]byte(val), bz)
}
}
Expand Down
Loading