mirror of
https://github.com/talent-plan/tinykv.git
synced 2025-03-28 21:10:23 +08:00
fix key not found and close iter (#132)
Signed-off-by: Connor1996 <zbk602423539@gmail.com>
This commit is contained in:
parent
b46700aa49
commit
8aa0fa7768
@ -4,7 +4,6 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/Connor1996/badger"
|
||||
"github.com/pingcap-incubator/tinykv/kv/config"
|
||||
"github.com/pingcap-incubator/tinykv/kv/storage"
|
||||
"github.com/pingcap-incubator/tinykv/kv/storage/standalone_storage"
|
||||
@ -183,8 +182,9 @@ func TestRawDelete1(t *testing.T) {
|
||||
_, err := server.RawDelete(nil, req)
|
||||
assert.Nil(t, err)
|
||||
|
||||
_, err = Get(s, cf, []byte{99})
|
||||
assert.Equal(t, err, badger.ErrKeyNotFound)
|
||||
val, err := Get(s, cf, []byte{99})
|
||||
assert.Equal(t, err, nil)
|
||||
assert.Equal(t, val, []byte(nil))
|
||||
}
|
||||
|
||||
func TestRawScan1(t *testing.T) {
|
||||
|
@ -23,7 +23,11 @@ func (r *RegionReader) GetCF(cf string, key []byte) ([]byte, error) {
|
||||
if err := util.CheckKeyInRegion(key, r.region); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return engine_util.GetCFFromTxn(r.txn, cf, key)
|
||||
val, err := engine_util.GetCFFromTxn(r.txn, cf, key)
|
||||
if err == badger.ErrKeyNotFound {
|
||||
return nil, nil
|
||||
}
|
||||
return val, err
|
||||
}
|
||||
|
||||
func (r *RegionReader) IterCF(cf string) engine_util.DBIterator {
|
||||
|
@ -15,6 +15,7 @@ type Storage interface {
|
||||
}
|
||||
|
||||
type StorageReader interface {
|
||||
// When the key doesn't exist, return nil for the value
|
||||
GetCF(cf string, key []byte) ([]byte, error)
|
||||
IterCF(cf string) engine_util.DBIterator
|
||||
Close()
|
||||
|
@ -381,6 +381,7 @@ func (c *Cluster) Scan(start, end []byte) [][]byte {
|
||||
}
|
||||
values = append(values, value)
|
||||
}
|
||||
iter.Close()
|
||||
|
||||
key = region.EndKey
|
||||
if len(key) == 0 {
|
||||
|
@ -71,7 +71,7 @@ func TestGetEmpty4B(t *testing.T) {
|
||||
|
||||
assert.Nil(t, resp.RegionError)
|
||||
assert.Nil(t, resp.Error)
|
||||
assert.Equal(t, []byte(nil), resp.Value)
|
||||
assert.True(t, resp.NotFound)
|
||||
}
|
||||
|
||||
// TestGetNone4B tests that getting a missing key works.
|
||||
@ -91,7 +91,7 @@ func TestGetNone4B(t *testing.T) {
|
||||
resp := builder.runOneRequest(&req).(*kvrpcpb.GetResponse)
|
||||
assert.Nil(t, resp.RegionError)
|
||||
assert.Nil(t, resp.Error)
|
||||
assert.Equal(t, []byte(nil), resp.Value)
|
||||
assert.True(t, resp.NotFound)
|
||||
}
|
||||
|
||||
// TestGetVersions4B tests we get the correct value when there are multiple versions.
|
||||
@ -135,7 +135,7 @@ func TestGetVersions4B(t *testing.T) {
|
||||
|
||||
assert.Nil(t, resp0.RegionError)
|
||||
assert.Nil(t, resp0.Error)
|
||||
assert.Equal(t, []byte(nil), resp0.Value)
|
||||
assert.True(t, resp0.NotFound)
|
||||
assert.Nil(t, resp1.RegionError)
|
||||
assert.Nil(t, resp1.Error)
|
||||
assert.Equal(t, []byte{42}, resp1.Value)
|
||||
@ -203,10 +203,10 @@ func TestGetDeleted4B(t *testing.T) {
|
||||
assert.Equal(t, []byte{42}, resp2.Value)
|
||||
assert.Nil(t, resp3.RegionError)
|
||||
assert.Nil(t, resp3.Error)
|
||||
assert.Equal(t, []byte(nil), resp3.Value)
|
||||
assert.True(t, resp3.NotFound)
|
||||
assert.Nil(t, resp4.RegionError)
|
||||
assert.Nil(t, resp4.Error)
|
||||
assert.Equal(t, []byte(nil), resp4.Value)
|
||||
assert.True(t, resp4.NotFound)
|
||||
assert.Nil(t, resp5.RegionError)
|
||||
assert.Nil(t, resp5.Error)
|
||||
assert.Equal(t, []byte{44}, resp5.Value)
|
||||
|
@ -77,7 +77,10 @@ func (lock *Lock) IsLockedFor(key []byte, txnStartTs uint64, resp interface{}) b
|
||||
// AllLocksForTxn returns all locks for the current transaction.
|
||||
func AllLocksForTxn(txn *MvccTxn) ([]KlPair, error) {
|
||||
var result []KlPair
|
||||
for iter := txn.Reader().IterCF(engine_util.CfLock); iter.Valid(); iter.Next() {
|
||||
iter := txn.Reader.IterCF(engine_util.CfLock)
|
||||
defer iter.Close()
|
||||
|
||||
for ; iter.Valid(); iter.Next() {
|
||||
item := iter.Item()
|
||||
val, err := item.Value()
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user