Skip to content
Snippets Groups Projects
Commit 0675ae69 authored by Richard T. Carback III's avatar Richard T. Carback III
Browse files

Rework sentRequest to call an upgrade function and wrap any errors returned by it

parent 178d4024
No related branches found
No related tags found
2 merge requests!510Release,!282Auth Store Fixes
...@@ -78,14 +78,11 @@ func loadSentRequest(kv *versioned.KV, partner *id.ID, grp *cyclic.Group) (*Sent ...@@ -78,14 +78,11 @@ func loadSentRequest(kv *versioned.KV, partner *id.ID, grp *cyclic.Group) (*Sent
// V0 Upgrade Path // V0 Upgrade Path
if !ekv.Exists(err) { if !ekv.Exists(err) {
obj2, err2 := kv.Get(makeOldSentRequestKey(partner), 0) upgradeErr := upgradeSentRequestKeyV0(kv, partner)
if err2 != nil { if upgradeErr != nil {
jww.DEBUG.Printf("v0 loadSentRequest: %+v", err) return nil, errors.Wrapf(err, "%+v", upgradeErr)
} else {
obj = obj2
err = nil
} }
// Note: uses same encoding, just different keys obj, err = kv.Get(srKey, currentSentRequestVersion)
} }
if err != nil { if err != nil {
...@@ -272,12 +269,37 @@ func (sr *SentRequest) getType() RequestType { ...@@ -272,12 +269,37 @@ func (sr *SentRequest) getType() RequestType {
return Sent return Sent
} }
// makeSentRequestKey makes the key string for accessing the
// partners sent request object from the key value store.
func makeSentRequestKey(partner *id.ID) string { func makeSentRequestKey(partner *id.ID) string {
return "sentRequest:" + partner.String() return "sentRequest:" + partner.String()
} }
// V0 Utility Functions // V0 Utility Functions
func makeOldSentRequestKey(partner *id.ID) string { // makeSentRequestKeyV0 The old key used the string pattern
// "Partner:PartnerID" instead of "sentRequest:PartnerID".
func makeSentRequestKeyV0(partner *id.ID) string {
return fmt.Sprintf("Partner:%v", partner.String()) return fmt.Sprintf("Partner:%v", partner.String())
} }
// upgradeSentRequestKeyV0 upgrads the srKey from version 0 to 1 by
// changing the version number.
func upgradeSentRequestKeyV0(kv *versioned.KV, partner *id.ID) error {
oldKey := makeSentRequestKeyV0(partner)
obj, err := kv.Get(oldKey, 0)
if err != nil {
return err
}
jww.INFO.Printf("Upgrading legacy srKey for %s", partner)
// Note: uses same encoding, just different keys
obj.Version = 1
err = kv.Set(makeSentRequestKey(partner), 1, obj)
if err != nil {
return err
}
return kv.Delete(oldKey, 0)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment