mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
test and set creates the key if key does not exists. fixes #96
This commit is contained in:
parent
91aed9e232
commit
6345e02d20
@ -465,12 +465,16 @@ func (s *Store) TestAndSet(key string, prevValue string, value string, expireTim
|
||||
resp := s.internalGet(key)
|
||||
|
||||
if resp == nil {
|
||||
return nil, etcdErr.NewError(100, "testandset: "+key)
|
||||
if prevValue != "" {
|
||||
errmsg := fmt.Sprintf("TestAndSet: key not found and previousValue is not empty %s:%s ", key, prevValue)
|
||||
return nil, etcdErr.NewError(100, errmsg)
|
||||
}
|
||||
return s.internalSet(key, value, expireTime, index)
|
||||
}
|
||||
|
||||
if resp.Value == prevValue {
|
||||
|
||||
// If test success, do set
|
||||
// If test succeed, do set
|
||||
return s.internalSet(key, value, expireTime, index)
|
||||
} else {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user