mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #11939 from tedyu/chk-ret-from-write
etcdserver: check the error return from Write()
This commit is contained in:
commit
be0639090d
@ -311,7 +311,9 @@ func (s *store) CompareAndSwap(nodePath string, prevValue string, prevIndex uint
|
|||||||
eNode := e.Node
|
eNode := e.Node
|
||||||
|
|
||||||
// if test succeed, write the value
|
// if test succeed, write the value
|
||||||
n.Write(value, s.CurrentIndex)
|
if err := n.Write(value, s.CurrentIndex); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
n.UpdateTTL(expireOpts.ExpireTime)
|
n.UpdateTTL(expireOpts.ExpireTime)
|
||||||
|
|
||||||
// copy the value for safety
|
// copy the value for safety
|
||||||
@ -532,7 +534,9 @@ func (s *store) Update(nodePath string, newValue string, expireOpts TTLOptionSet
|
|||||||
e.PrevNode = n.Repr(false, false, s.clock)
|
e.PrevNode = n.Repr(false, false, s.clock)
|
||||||
eNode := e.Node
|
eNode := e.Node
|
||||||
|
|
||||||
n.Write(newValue, nextIndex)
|
if err := n.Write(newValue, nextIndex); err != nil {
|
||||||
|
return nil, fmt.Errorf("nodePath %v : %v", nodePath, err)
|
||||||
|
}
|
||||||
|
|
||||||
if n.IsDir() {
|
if n.IsDir() {
|
||||||
eNode.Dir = true
|
eNode.Dir = true
|
||||||
|
@ -120,14 +120,16 @@ func TestStoreUpdateDirTTL(t *testing.T) {
|
|||||||
s.clock = fc
|
s.clock = fc
|
||||||
|
|
||||||
var eidx uint64 = 3
|
var eidx uint64 = 3
|
||||||
s.Create("/foo", true, "", false, TTLOptionSet{ExpireTime: Permanent})
|
_, err := s.Create("/foo", true, "", false, TTLOptionSet{ExpireTime: Permanent})
|
||||||
s.Create("/foo/bar", false, "baz", false, TTLOptionSet{ExpireTime: Permanent})
|
|
||||||
e, err := s.Update("/foo", "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
|
||||||
testutil.AssertNil(t, err)
|
testutil.AssertNil(t, err)
|
||||||
testutil.AssertEqual(t, e.Node.Dir, true)
|
_, err = s.Create("/foo/bar", false, "baz", false, TTLOptionSet{ExpireTime: Permanent})
|
||||||
|
testutil.AssertNil(t, err)
|
||||||
|
e, err := s.Update("/foo/bar", "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
||||||
|
testutil.AssertNil(t, err)
|
||||||
|
testutil.AssertEqual(t, e.Node.Dir, false)
|
||||||
testutil.AssertEqual(t, e.EtcdIndex, eidx)
|
testutil.AssertEqual(t, e.EtcdIndex, eidx)
|
||||||
e, _ = s.Get("/foo/bar", false, false)
|
e, _ = s.Get("/foo/bar", false, false)
|
||||||
testutil.AssertEqual(t, *e.Node.Value, "baz")
|
testutil.AssertEqual(t, *e.Node.Value, "")
|
||||||
testutil.AssertEqual(t, e.EtcdIndex, eidx)
|
testutil.AssertEqual(t, e.EtcdIndex, eidx)
|
||||||
|
|
||||||
fc.Advance(600 * time.Millisecond)
|
fc.Advance(600 * time.Millisecond)
|
||||||
@ -270,13 +272,14 @@ func TestStoreRefresh(t *testing.T) {
|
|||||||
|
|
||||||
s.Create("/foo", false, "bar", false, TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
s.Create("/foo", false, "bar", false, TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
||||||
s.Create("/bar", true, "bar", false, TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
s.Create("/bar", true, "bar", false, TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
||||||
|
s.Create("/bar/z", false, "bar", false, TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond)})
|
||||||
_, err := s.Update("/foo", "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
_, err := s.Update("/foo", "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
||||||
testutil.AssertNil(t, err)
|
testutil.AssertNil(t, err)
|
||||||
|
|
||||||
_, err = s.Set("/foo", false, "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
_, err = s.Set("/foo", false, "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
||||||
testutil.AssertNil(t, err)
|
testutil.AssertNil(t, err)
|
||||||
|
|
||||||
_, err = s.Update("/bar", "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
_, err = s.Update("/bar/z", "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
||||||
testutil.AssertNil(t, err)
|
testutil.AssertNil(t, err)
|
||||||
|
|
||||||
_, err = s.CompareAndSwap("/foo", "bar", 0, "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
_, err = s.CompareAndSwap("/foo", "bar", 0, "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user