mirror of https://github.com/status-im/consul.git
lock.go: fix race condition
Fix a race condition between startChild() and killChild() that could lead to an orphaned managed process. Fixes #1155
This commit is contained in:
parent
9a9cc9341b
commit
6875e8d6b4
|
@ -268,13 +268,14 @@ func (c *LockCommand) startChild(script string, doneCh chan struct{}) error {
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
// Start the child process
|
// Start the child process
|
||||||
|
c.childLock.Lock()
|
||||||
if err := cmd.Start(); err != nil {
|
if err := cmd.Start(); err != nil {
|
||||||
c.Ui.Error(fmt.Sprintf("Error starting handler: %s", err))
|
c.Ui.Error(fmt.Sprintf("Error starting handler: %s", err))
|
||||||
|
c.childLock.Unlock()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup the child info
|
// Setup the child info
|
||||||
c.childLock.Lock()
|
|
||||||
c.child = cmd.Process
|
c.child = cmd.Process
|
||||||
c.childLock.Unlock()
|
c.childLock.Unlock()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue