From 6345e02d20189d90240e2e41c51718c493b043c4 Mon Sep 17 00:00:00 2001 From: "Fabrizio (Misto) Milo" Date: Thu, 22 Aug 2013 15:04:17 -0700 Subject: [PATCH] test and set creates the key if key does not exists. fixes #96 --- store/store.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/store/store.go b/store/store.go index d37345f4d..c1da0fc27 100644 --- a/store/store.go +++ b/store/store.go @@ -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 {