etcdctl: add ttl flag for lock command
This commit is contained in:
@ -832,10 +832,14 @@ echo ${transferee_id}
|
|||||||
|
|
||||||
## Concurrency commands
|
## 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.
|
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
|
#### Output
|
||||||
|
|
||||||
Once the lock is acquired, the result for the GET on the unique lock holder key is displayed.
|
Once the lock is acquired, the result for the GET on the unique lock holder key is displayed.
|
||||||
|
@ -28,6 +28,8 @@ import (
|
|||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var lockTTL = 10
|
||||||
|
|
||||||
// NewLockCommand returns the cobra command for "lock".
|
// NewLockCommand returns the cobra command for "lock".
|
||||||
func NewLockCommand() *cobra.Command {
|
func NewLockCommand() *cobra.Command {
|
||||||
c := &cobra.Command{
|
c := &cobra.Command{
|
||||||
@ -35,6 +37,7 @@ func NewLockCommand() *cobra.Command {
|
|||||||
Short: "Acquires a named lock",
|
Short: "Acquires a named lock",
|
||||||
Run: lockCommandFunc,
|
Run: lockCommandFunc,
|
||||||
}
|
}
|
||||||
|
c.Flags().IntVarP(&lockTTL, "ttl", "", lockTTL, "timeout for session")
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +52,7 @@ func lockCommandFunc(cmd *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func lockUntilSignal(c *clientv3.Client, lockname string, cmdArgs []string) error {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user