command/lock: Check for shutdown during lock acquisition. Fixes #800

This commit is contained in:
Armon Dadgar 2015-07-22 16:07:44 -07:00
parent 2b93e5f52c
commit 6f42f6640c
1 changed files with 11 additions and 2 deletions

View File

@ -71,6 +71,7 @@ Options:
} }
func (c *LockCommand) Run(args []string) int { func (c *LockCommand) Run(args []string) int {
var childDone chan struct{}
var name, token string var name, token string
var limit int var limit int
cmdFlags := flag.NewFlagSet("watch", flag.ContinueOnError) cmdFlags := flag.NewFlagSet("watch", flag.ContinueOnError)
@ -147,8 +148,16 @@ func (c *LockCommand) Run(args []string) int {
return 1 return 1
} }
// Check if we were shutdown but managed to still acquire the lock
select {
case <-c.ShutdownCh:
c.Ui.Error("Shutdown triggered during lock acquisition")
goto RELEASE
default:
}
// Start the child process // Start the child process
childDone := make(chan struct{}) childDone = make(chan struct{})
go func() { go func() {
if err := c.startChild(script, childDone); err != nil { if err := c.startChild(script, childDone); err != nil {
c.Ui.Error(fmt.Sprintf("%s", err)) c.Ui.Error(fmt.Sprintf("%s", err))