Browse Source

Merge pull request #3685 from gyuho/etcdctl_mk_command_2

etcdctl: fix mk command with PrevNoExist
Yicheng Qin 10 năm trước cách đây
mục cha
commit
9ce79dbbc3
1 tập tin đã thay đổi với 5 bổ sung1 xóa
  1. 5 1
      etcdctl/command/mk_command.go

+ 5 - 1
etcdctl/command/mk_command.go

@@ -51,7 +51,11 @@ func mkCommandFunc(c *cli.Context, ki client.KeysAPI) {
 	ttl := c.Int("ttl")
 
 	ctx, cancel := contextWithTotalTimeout(c)
-	resp, err := ki.Set(ctx, key, value, &client.SetOptions{TTL: time.Duration(ttl) * time.Second, PrevExist: client.PrevIgnore})
+	// Since PrevNoExist means that the Node must not exist previously,
+	// this Set method always creates a new key. Therefore, mk command
+	// succeeds only if the key did not previously exist, and the command
+	// prevents one from overwriting values accidentally.
+	resp, err := ki.Set(ctx, key, value, &client.SetOptions{TTL: time.Duration(ttl) * time.Second, PrevExist: client.PrevNoExist})
 	cancel()
 	if err != nil {
 		handleError(ExitServerError, err)