mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: recover cluster version from backend
This commit is contained in:
parent
5cd2502ab1
commit
ed5a01a48d
@ -893,7 +893,7 @@ func TestKVLargeRequests(t *testing.T) {
|
||||
expectError error
|
||||
}{
|
||||
{
|
||||
maxRequestBytesServer: 1,
|
||||
maxRequestBytesServer: 256,
|
||||
maxCallSendBytesClient: 0,
|
||||
maxCallRecvBytesClient: 0,
|
||||
valueSize: 1024,
|
||||
|
@ -247,7 +247,7 @@ func (c *RaftCluster) Recover(onSet func(*zap.Logger, *semver.Version)) {
|
||||
defer c.Unlock()
|
||||
|
||||
c.members, c.removed = membersFromStore(c.lg, c.v2store)
|
||||
c.version = clusterVersionFromStore(c.lg, c.v2store)
|
||||
c.version = clusterVersionFromBackend(c.lg, c.be)
|
||||
mustDetectDowngrade(c.lg, c.version)
|
||||
onSet(c.lg, c.version)
|
||||
|
||||
@ -753,6 +753,26 @@ func clusterVersionFromStore(lg *zap.Logger, st v2store.Store) *semver.Version {
|
||||
return semver.Must(semver.NewVersion(*e.Node.Value))
|
||||
}
|
||||
|
||||
func clusterVersionFromBackend(lg *zap.Logger, be backend.Backend) *semver.Version {
|
||||
ckey := backendClusterVersionKey()
|
||||
tx := be.ReadTx()
|
||||
tx.RLock()
|
||||
defer tx.RUnlock()
|
||||
keys, vals := tx.UnsafeRange(clusterBucketName, ckey, nil, 0)
|
||||
if len(keys) == 0 {
|
||||
return nil
|
||||
}
|
||||
if len(keys) != 1 {
|
||||
if lg != nil {
|
||||
lg.Panic(
|
||||
"unexpected number of keys when getting cluster version from backend",
|
||||
zap.Int("number fo keys", len(keys)),
|
||||
)
|
||||
}
|
||||
}
|
||||
return semver.Must(semver.NewVersion(string(vals[0])))
|
||||
}
|
||||
|
||||
// ValidateClusterAndAssignIDs validates the local cluster by matching the PeerURLs
|
||||
// with the existing cluster. If the validation succeeds, it assigns the IDs
|
||||
// from the existing cluster to the local cluster.
|
||||
|
@ -1898,7 +1898,7 @@ func TestV3LargeRequests(t *testing.T) {
|
||||
expectError error
|
||||
}{
|
||||
// don't set to 0. use 0 as the default.
|
||||
{1, 1024, rpctypes.ErrGRPCRequestTooLarge},
|
||||
{256, 1024, rpctypes.ErrGRPCRequestTooLarge},
|
||||
{10 * 1024 * 1024, 9 * 1024 * 1024, nil},
|
||||
{10 * 1024 * 1024, 10 * 1024 * 1024, rpctypes.ErrGRPCRequestTooLarge},
|
||||
{10 * 1024 * 1024, 10*1024*1024 + 5, rpctypes.ErrGRPCRequestTooLarge},
|
||||
|
Loading…
x
Reference in New Issue
Block a user