Browse Source

Merge pull request #8370 from jiaxuanzhou/lock_cmd

etcdctl: add ttl flag for lock command
Anthony Romano 8 years ago
parent
commit
04413454ac
2 changed files with 9 additions and 2 deletions
  1. 5 1
      etcdctl/README.md
  2. 4 1
      etcdctl/ctlv3/command/lock_command.go

+ 5 - 1
etcdctl/README.md

@@ -889,10 +889,14 @@ echo ${transferee_id}
 
 ## Concurrency commands
 
-### LOCK \<lockname\> [command arg1 arg2 ...]
+### LOCK [options] \<lockname\> [command arg1 arg2 ...]
 
 LOCK acquires a distributed named mutex with a given name. Once the lock is acquired, it will be held until etcdctl is terminated.
 
+#### Options
+
+- ttl - time out in seconds of lock session.
+
 #### Output
 
 Once the lock is acquired, the result for the GET on the unique lock holder key is displayed.

+ 4 - 1
etcdctl/ctlv3/command/lock_command.go

@@ -28,6 +28,8 @@ import (
 	"golang.org/x/net/context"
 )
 
+var lockTTL = 10
+
 // NewLockCommand returns the cobra command for "lock".
 func NewLockCommand() *cobra.Command {
 	c := &cobra.Command{
@@ -35,6 +37,7 @@ func NewLockCommand() *cobra.Command {
 		Short: "Acquires a named lock",
 		Run:   lockCommandFunc,
 	}
+	c.Flags().IntVarP(&lockTTL, "ttl", "", lockTTL, "timeout for session")
 	return c
 }
 
@@ -49,7 +52,7 @@ func lockCommandFunc(cmd *cobra.Command, args []string) {
 }
 
 func lockUntilSignal(c *clientv3.Client, lockname string, cmdArgs []string) error {
-	s, err := concurrency.NewSession(c)
+	s, err := concurrency.NewSession(c, concurrency.WithTTL(lockTTL))
 	if err != nil {
 		return err
 	}