Merge pull request #30408 from cpuguy83/fix_plugin_wait

Fix deadlock on v1 plugin with activate error
This commit is contained in:
Victor Vieux 2017-01-24 17:29:56 -08:00 committed by GitHub
commit 113e9f07f4
2 changed files with 8 additions and 1 deletions

View file

@ -1,6 +1,7 @@
package plugins
import (
"errors"
"path/filepath"
"runtime"
"sync"
@ -20,6 +21,12 @@ func TestPluginAddHandler(t *testing.T) {
testActive(t, p)
}
func TestPluginWaitBadPlugin(t *testing.T) {
p := &Plugin{activateWait: sync.NewCond(&sync.Mutex{})}
p.activateErr = errors.New("some junk happened")
testActive(t, p)
}
func testActive(t *testing.T, p *Plugin) {
done := make(chan struct{})
go func() {

View file

@ -169,7 +169,7 @@ func (p *Plugin) activateWithLock() error {
func (p *Plugin) waitActive() error {
p.activateWait.L.Lock()
for !p.activated() {
for !p.activated() && p.activateErr == nil {
p.activateWait.Wait()
}
p.activateWait.L.Unlock()