Bläddra i källkod

Merge pull request #6559 from heyitsanthony/fix-lease-hash

lessor: delete keys in deterministic order on revoke
fanmin shi 9 år sedan
förälder
incheckning
613525f711
1 ändrade filer med 10 tillägg och 1 borttagningar
  1. 10 1
      lease/lessor.go

+ 10 - 1
lease/lessor.go

@@ -18,6 +18,7 @@ import (
 	"encoding/binary"
 	"errors"
 	"math"
+	"sort"
 	"sync"
 	"time"
 
@@ -228,8 +229,16 @@ func (le *lessor) Revoke(id LeaseID) error {
 	}
 
 	tid := le.rd.TxnBegin()
+
+	// sort keys so deletes are in same order among all members,
+	// otherwise the backened hashes will be different
+	keys := make([]string, 0, len(l.itemSet))
 	for item := range l.itemSet {
-		_, _, err := le.rd.TxnDeleteRange(tid, []byte(item.Key), nil)
+		keys = append(keys, item.Key)
+	}
+	sort.StringSlice(keys).Sort()
+	for _, key := range keys {
+		_, _, err := le.rd.TxnDeleteRange(tid, []byte(key), nil)
 		if err != nil {
 			panic(err)
 		}