Skip to content
Snippets Groups Projects
Commit 184fb6ca authored by Jake Taylor's avatar Jake Taylor :lips:
Browse files

Merge branch 'XX-4110/kvExistFix' into 'release'

XX-4110 / All users of ekv should be using kv.Exists() and not os.IsNotExists()

See merge request !361
parents b54fe9e3 a9adcd6d
No related branches found
No related tags found
3 merge requests!510Release,!361XX-4110 / All users of ekv should be using kv.Exists() and not os.IsNotExists(),!354Channels impl
...@@ -16,7 +16,6 @@ import ( ...@@ -16,7 +16,6 @@ import (
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/crypto/e2e/auth"
"gitlab.com/elixxir/ekv"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
) )
...@@ -122,7 +121,7 @@ func (s *Store) newOrLoadPreviousNegotiations() (map[id.ID]bool, error) { ...@@ -122,7 +121,7 @@ func (s *Store) newOrLoadPreviousNegotiations() (map[id.ID]bool, error) {
obj, err := s.kv.Get(negotiationPartnersKey, negotiationPartnersVersion) obj, err := s.kv.Get(negotiationPartnersKey, negotiationPartnersVersion)
// V0 Upgrade Path // V0 Upgrade Path
if !ekv.Exists(err) { if !s.kv.Exists(err) {
upgradeErr := upgradePreviousNegotiationsV0(s.kv) upgradeErr := upgradePreviousNegotiationsV0(s.kv)
if upgradeErr != nil { if upgradeErr != nil {
return nil, errors.Wrapf(err, "%+v", upgradeErr) return nil, errors.Wrapf(err, "%+v", upgradeErr)
...@@ -132,7 +131,7 @@ func (s *Store) newOrLoadPreviousNegotiations() (map[id.ID]bool, error) { ...@@ -132,7 +131,7 @@ func (s *Store) newOrLoadPreviousNegotiations() (map[id.ID]bool, error) {
} }
// Note: if it still doesn't exist, return an empty one. // Note: if it still doesn't exist, return an empty one.
if err != nil && !ekv.Exists(err) { if err != nil && !s.kv.Exists(err) {
newPreviousNegotiations := make(map[id.ID]bool) newPreviousNegotiations := make(map[id.ID]bool)
return newPreviousNegotiations, nil return newPreviousNegotiations, nil
} else if err != nil { } else if err != nil {
...@@ -271,7 +270,7 @@ func unmarshalPreviousNegotiationsV0(buf []byte) map[id.ID]struct{} { ...@@ -271,7 +270,7 @@ func unmarshalPreviousNegotiationsV0(buf []byte) map[id.ID]struct{} {
// to V1 // to V1
func upgradePreviousNegotiationsV0(kv *versioned.KV) error { func upgradePreviousNegotiationsV0(kv *versioned.KV) error {
obj, err := kv.Get(negotiationPartnersKey, 0) obj, err := kv.Get(negotiationPartnersKey, 0)
if !ekv.Exists(err) { if !kv.Exists(err) {
return nil return nil
} }
......
...@@ -17,7 +17,6 @@ import ( ...@@ -17,7 +17,6 @@ import (
util "gitlab.com/elixxir/client/storage/utility" util "gitlab.com/elixxir/client/storage/utility"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/contact"
"gitlab.com/elixxir/ekv"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
) )
...@@ -84,11 +83,11 @@ func loadReceivedRequest(kv *versioned.KV, partner *id.ID) ( ...@@ -84,11 +83,11 @@ func loadReceivedRequest(kv *versioned.KV, partner *id.ID) (
} }
round, err := rounds.LoadRound(kv, makeRoundKey(partner)) round, err := rounds.LoadRound(kv, makeRoundKey(partner))
if err != nil && ekv.Exists(err) { if err != nil && kv.Exists(err) {
return nil, errors.WithMessagef(err, "Failed to Load "+ return nil, errors.WithMessagef(err, "Failed to Load "+
"round request was received on with %s", "round request was received on with %s",
partner) partner)
} else if err != nil && !ekv.Exists(err) { } else if err != nil && !kv.Exists(err) {
jww.WARN.Printf("No round info for partner %s", partner) jww.WARN.Printf("No round info for partner %s", partner)
} }
......
...@@ -19,7 +19,6 @@ import ( ...@@ -19,7 +19,6 @@ import (
sidhinterface "gitlab.com/elixxir/client/interfaces/sidh" sidhinterface "gitlab.com/elixxir/client/interfaces/sidh"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/cyclic"
"gitlab.com/elixxir/ekv"
"gitlab.com/elixxir/primitives/format" "gitlab.com/elixxir/primitives/format"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
...@@ -77,7 +76,7 @@ func loadSentRequest(kv *versioned.KV, partner *id.ID, grp *cyclic.Group) (*Sent ...@@ -77,7 +76,7 @@ func loadSentRequest(kv *versioned.KV, partner *id.ID, grp *cyclic.Group) (*Sent
obj, err := kv.Get(srKey, currentSentRequestVersion) obj, err := kv.Get(srKey, currentSentRequestVersion)
// V0 Upgrade Path // V0 Upgrade Path
if !ekv.Exists(err) { if !kv.Exists(err) {
upgradeErr := upgradeSentRequestKeyV0(kv, partner) upgradeErr := upgradeSentRequestKeyV0(kv, partner)
if upgradeErr != nil { if upgradeErr != nil {
return nil, errors.Wrapf(err, "%+v", upgradeErr) return nil, errors.Wrapf(err, "%+v", upgradeErr)
......
...@@ -11,7 +11,6 @@ import ( ...@@ -11,7 +11,6 @@ import (
"bytes" "bytes"
"gitlab.com/elixxir/client/xxdk" "gitlab.com/elixxir/client/xxdk"
"reflect" "reflect"
"strings"
"testing" "testing"
"time" "time"
...@@ -151,7 +150,7 @@ func Test_resumeBackup_NoKeyError(t *testing.T) { ...@@ -151,7 +150,7 @@ func Test_resumeBackup_NoKeyError(t *testing.T) {
rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG) rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG)
_, err := ResumeBackup(nil, &xxdk.Container{}, newMockE2e(t), newMockSession(t), _, err := ResumeBackup(nil, &xxdk.Container{}, newMockE2e(t), newMockSession(t),
newMockUserDiscovery(), s.GetKV(), rngGen) newMockUserDiscovery(), s.GetKV(), rngGen)
if err == nil || !strings.Contains(err.Error(), expectedErr) { if err == nil || s.GetKV().Exists(err) {
t.Errorf("ResumeBackup did not return the expected error when no "+ t.Errorf("ResumeBackup did not return the expected error when no "+
"password is present.\nexpected: %s\nreceived: %+v", expectedErr, err) "password is present.\nexpected: %s\nreceived: %+v", expectedErr, err)
} }
......
...@@ -10,7 +10,6 @@ package identity ...@@ -10,7 +10,6 @@ package identity
import ( import (
"encoding/json" "encoding/json"
"io" "io"
"io/fs"
"sync" "sync"
"time" "time"
...@@ -86,7 +85,7 @@ func NewOrLoadTracker(session storage.Session, addrSpace address.Space) *manager ...@@ -86,7 +85,7 @@ func NewOrLoadTracker(session storage.Session, addrSpace address.Space) *manager
// Load this structure // Load this structure
err := t.load() err := t.load()
if err != nil && errors.Is(err, fs.ErrNotExist) { if err != nil && !t.session.GetKV().Exists(err) {
oldTimestamp, err2 := getOldTimestampStore(t.session) oldTimestamp, err2 := getOldTimestampStore(t.session)
if err2 == nil { if err2 == nil {
jww.WARN.Printf("No tracked identities found, creating a new " + jww.WARN.Printf("No tracked identities found, creating a new " +
......
...@@ -14,9 +14,7 @@ import ( ...@@ -14,9 +14,7 @@ import (
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
"io/fs"
"math" "math"
"strings"
"sync" "sync"
) )
...@@ -51,7 +49,7 @@ type conversationDisk struct { ...@@ -51,7 +49,7 @@ type conversationDisk struct {
// saved to KV, and returned. // saved to KV, and returned.
func LoadOrMakeConversation(kv *versioned.KV, partner *id.ID) *Conversation { func LoadOrMakeConversation(kv *versioned.KV, partner *id.ID) *Conversation {
c, err := loadConversation(kv, partner) c, err := loadConversation(kv, partner)
if err != nil && !(errors.Is(err, fs.ErrNotExist) || strings.Contains(err.Error(), "object not found")) { if err != nil && kv.Exists(err) {
jww.FATAL.Panicf("Failed to load conversation from storage: %+v", err) jww.FATAL.Panicf("Failed to load conversation from storage: %+v", err)
} else if c == nil { } else if c == nil {
// Create new conversation and save to KV if one does not exist // Create new conversation and save to KV if one does not exist
......
...@@ -15,7 +15,6 @@ import ( ...@@ -15,7 +15,6 @@ import (
"gitlab.com/elixxir/client/e2e/receive" "gitlab.com/elixxir/client/e2e/receive"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/elixxir/crypto/e2e" "gitlab.com/elixxir/crypto/e2e"
"gitlab.com/elixxir/ekv"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
"strconv" "strconv"
...@@ -57,7 +56,7 @@ func loadOrCreateMultiPartMessage(sender *id.ID, messageID uint64, ...@@ -57,7 +56,7 @@ func loadOrCreateMultiPartMessage(sender *id.ID, messageID uint64,
obj, err := kv.Get(messageKey, currentMultiPartMessageVersion) obj, err := kv.Get(messageKey, currentMultiPartMessageVersion)
if err != nil { if err != nil {
if !ekv.Exists(err) { if !kv.Exists(err) {
mpm := &multiPartMessage{ mpm := &multiPartMessage{
Sender: sender, Sender: sender,
MessageID: messageID, MessageID: messageID,
......
...@@ -264,7 +264,7 @@ func TestMultiPartMessage_delete(t *testing.T) { ...@@ -264,7 +264,7 @@ func TestMultiPartMessage_delete(t *testing.T) {
mpm.delete() mpm.delete()
obj, err := kv.Get(messageKey, 0) obj, err := kv.Get(messageKey, 0)
if ekv.Exists(err) { if kv.Exists(err) {
t.Errorf("delete did not properly delete key %s."+ t.Errorf("delete did not properly delete key %s."+
"\n\tobject received: %+v", messageKey, obj) "\n\tobject received: %+v", messageKey, obj)
} }
......
...@@ -87,7 +87,7 @@ func Test_loadPart_NotFoundError(t *testing.T) { ...@@ -87,7 +87,7 @@ func Test_loadPart_NotFoundError(t *testing.T) {
// Load part from key value store // Load part from key value store
data, err := loadPart(kv, partNum) data, err := loadPart(kv, partNum)
if ekv.Exists(err) { if kv.Exists(err) {
t.Errorf("loadPart found an item for the key: %v", err) t.Errorf("loadPart found an item for the key: %v", err)
} }
...@@ -121,7 +121,7 @@ func TestDeletePart(t *testing.T) { ...@@ -121,7 +121,7 @@ func TestDeletePart(t *testing.T) {
// Check if part was deleted // Check if part was deleted
_, err = loadPart(kv, partNum) _, err = loadPart(kv, partNum)
if ekv.Exists(err) { if kv.Exists(err) {
t.Errorf("part was found in key value store: %+v", err) t.Errorf("part was found in key value store: %+v", err)
} }
} }
...@@ -13,7 +13,6 @@ import ( ...@@ -13,7 +13,6 @@ import (
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
ftCrypto "gitlab.com/elixxir/crypto/fileTransfer" ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
"gitlab.com/elixxir/ekv"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
"sync" "sync"
) )
...@@ -56,7 +55,7 @@ func NewOrLoadReceived(kv *versioned.KV) (*Received, []*ReceivedTransfer, error) ...@@ -56,7 +55,7 @@ func NewOrLoadReceived(kv *versioned.KV) (*Received, []*ReceivedTransfer, error)
obj, err := s.kv.Get(receivedTransfersStoreKey, receivedTransfersStoreVersion) obj, err := s.kv.Get(receivedTransfersStoreKey, receivedTransfersStoreVersion)
if err != nil { if err != nil {
if ekv.Exists(err) { if kv.Exists(err) {
return nil, nil, errors.Errorf(errLoadReceived, err) return nil, nil, errors.Errorf(errLoadReceived, err)
} else { } else {
return s, nil, nil return s, nil, nil
......
...@@ -13,7 +13,6 @@ import ( ...@@ -13,7 +13,6 @@ import (
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
ftCrypto "gitlab.com/elixxir/crypto/fileTransfer" ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
"gitlab.com/elixxir/ekv"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
"sync" "sync"
...@@ -58,7 +57,7 @@ func NewOrLoadSent(kv *versioned.KV) (*Sent, []Part, error) { ...@@ -58,7 +57,7 @@ func NewOrLoadSent(kv *versioned.KV) (*Sent, []Part, error) {
obj, err := s.kv.Get(sentTransfersStoreKey, sentTransfersStoreVersion) obj, err := s.kv.Get(sentTransfersStoreKey, sentTransfersStoreVersion)
if err != nil { if err != nil {
if !ekv.Exists(err) { if !kv.Exists(err) {
// Return the new Sent if none exists in storage // Return the new Sent if none exists in storage
return s, nil, nil return s, nil, nil
} else { } else {
......
...@@ -563,7 +563,7 @@ func TestLoadStateVector_GetError(t *testing.T) { ...@@ -563,7 +563,7 @@ func TestLoadStateVector_GetError(t *testing.T) {
expectedErr := "object not found" expectedErr := "object not found"
_, err := LoadStateVector(kv, key) _, err := LoadStateVector(kv, key)
if err == nil || err.Error() != expectedErr { if err == nil || kv.Exists(err) {
t.Fatalf("LoadStateVector did not return the expected error when no "+ t.Fatalf("LoadStateVector did not return the expected error when no "+
"object exists in storage.\nexpected: %s\nreceived: %+v", "object exists in storage.\nexpected: %s\nreceived: %+v",
expectedErr, err) expectedErr, err)
......
...@@ -15,8 +15,6 @@ import ( ...@@ -15,8 +15,6 @@ import (
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
"gitlab.com/elixxir/primitives/fact" "gitlab.com/elixxir/primitives/fact"
"gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/netTime"
"io/fs"
"strings"
"sync" "sync"
) )
...@@ -138,8 +136,7 @@ func NewOrLoadStore(kv *versioned.KV) (*Store, error) { ...@@ -138,8 +136,7 @@ func NewOrLoadStore(kv *versioned.KV) (*Store, error) {
} }
if err := s.load(); err != nil { if err := s.load(); err != nil {
if strings.Contains(err.Error(), "object not found") || if err != nil && !s.kv.Exists(err) {
errors.Is(err, fs.ErrNotExist) {
return s, s.save() return s, s.save()
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment