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
|
||||
|
||||
// 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)
|
||||
|
||||
// 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)
|
||||
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() {
|
||||
eNode.Dir = true
|
||||
|
@ -120,14 +120,16 @@ func TestStoreUpdateDirTTL(t *testing.T) {
|
||||
s.clock = fc
|
||||
|
||||
var eidx uint64 = 3
|
||||
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)})
|
||||
_, err := s.Create("/foo", true, "", false, TTLOptionSet{ExpireTime: Permanent})
|
||||
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)
|
||||
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)
|
||||
|
||||
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("/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})
|
||||
testutil.AssertNil(t, err)
|
||||
|
||||
_, err = s.Set("/foo", false, "", TTLOptionSet{ExpireTime: fc.Now().Add(500 * time.Millisecond), Refresh: true})
|
||||
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)
|
||||
|
||||
_, 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