mirror of https://github.com/k3s-io/k3s
Merge pull request #5125 from mikedanese/shadowing-bug
fix variable shadowing bug in etcd_tools.gopull/6/head
commit
20d9dd9e9c
|
@ -329,15 +329,14 @@ func (h *EtcdHelper) SetObj(key string, obj, out runtime.Object, ttl uint64) err
|
||||||
|
|
||||||
create := true
|
create := true
|
||||||
if h.ResourceVersioner != nil {
|
if h.ResourceVersioner != nil {
|
||||||
version, err := h.ResourceVersioner.ResourceVersion(obj)
|
if version, err := h.ResourceVersioner.ResourceVersion(obj); err == nil && version != 0 {
|
||||||
if err == nil && version != 0 {
|
|
||||||
create = false
|
create = false
|
||||||
response, err = h.Client.CompareAndSwap(key, string(data), ttl, "", version)
|
response, err = h.Client.CompareAndSwap(key, string(data), ttl, "", version)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if create {
|
if create {
|
||||||
// Create will fail if a key already exists.
|
// Create will fail if a key already exists.
|
||||||
response, err = h.Client.Create(key, string(data), ttl)
|
response, err = h.Client.Create(key, string(data), ttl)
|
||||||
|
|
|
@ -414,6 +414,17 @@ func TestSetObj(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetObjFailCAS(t *testing.T) {
|
||||||
|
obj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}}
|
||||||
|
fakeClient := NewFakeEtcdClient(t)
|
||||||
|
fakeClient.CasErr = fakeClient.NewError(123)
|
||||||
|
helper := EtcdHelper{fakeClient, testapi.Codec(), versioner}
|
||||||
|
err := helper.SetObj("/some/key", obj, nil, 5)
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("Expecting error.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSetObjWithVersion(t *testing.T) {
|
func TestSetObjWithVersion(t *testing.T) {
|
||||||
obj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}}
|
obj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}}
|
||||||
fakeClient := NewFakeEtcdClient(t)
|
fakeClient := NewFakeEtcdClient(t)
|
||||||
|
|
|
@ -47,6 +47,7 @@ type FakeEtcdClient struct {
|
||||||
expectNotFoundGetSet map[string]struct{}
|
expectNotFoundGetSet map[string]struct{}
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
Err error
|
Err error
|
||||||
|
CasErr error
|
||||||
t TestLogger
|
t TestLogger
|
||||||
Ix int
|
Ix int
|
||||||
TestIndex bool
|
TestIndex bool
|
||||||
|
@ -225,6 +226,10 @@ func (f *FakeEtcdClient) CompareAndSwap(key, value string, ttl uint64, prevValue
|
||||||
f.t.Logf("c&s: returning err %v", f.Err)
|
f.t.Logf("c&s: returning err %v", f.Err)
|
||||||
return nil, f.Err
|
return nil, f.Err
|
||||||
}
|
}
|
||||||
|
if f.CasErr != nil {
|
||||||
|
f.t.Logf("c&s: returning err %v", f.CasErr)
|
||||||
|
return nil, f.CasErr
|
||||||
|
}
|
||||||
|
|
||||||
if !f.TestIndex {
|
if !f.TestIndex {
|
||||||
f.t.Errorf("Enable TestIndex for test involving CompareAndSwap")
|
f.t.Errorf("Enable TestIndex for test involving CompareAndSwap")
|
||||||
|
|
Loading…
Reference in New Issue