fixed race
diff --git a/apid.go b/apid.go index ea4eb8d..596cfe8 100644 --- a/apid.go +++ b/apid.go
@@ -71,8 +71,8 @@ } pie.Plugins = append(pie.Plugins, pluginData) } - Events().Emit(SystemEventsSelector, pie) pluginInitFuncs = nil + Events().Emit(SystemEventsSelector, pie) log.Debugf("done initializing plugins") }
diff --git a/events/events_test.go b/events/events_test.go index 857d7fc..5f8d181 100644 --- a/events/events_test.go +++ b/events/events_test.go
@@ -290,19 +290,19 @@ if pie, ok := event.(apid.ShutdownEvent); ok { Expect(pie.Description).Should(Equal("apid is going to shutdown")) - close(done) } else { Fail("Received wrong event") } } apid.Events().ListenFunc(apid.ShutdownEventSelector, h) - shutdownHandler := func(event apid.Event) {} - apid.Events().EmitWithCallback(apid.ShutdownEventSelector, apid.ShutdownEvent{"apid is going to shutdown"}, shutdownHandler) + <- apid.Events().Emit(apid.ShutdownEventSelector, apid.ShutdownEvent{"apid is going to shutdown"}) + close(done) }) It("handlers registered by plugins should execute before apid shutdown", func(done Done) { pluginNum := 10 count := int32(0) + countP := &count // create and register plugins, listen to shutdown event for i:=0; i<pluginNum; i++ { @@ -310,7 +310,7 @@ h := func(event apid.Event) { if pie, ok := event.(apid.ShutdownEvent); ok { Expect(pie.Description).Should(Equal("apid is going to shutdown")) - atomic.AddInt32(&count, 1) + atomic.AddInt32(countP, 1) } else { Fail("Received wrong event") }