Chore: Avoid stopping plugin (#74654)

This commit is contained in:
Andres Martinez Gotor
2023-09-12 10:34:12 +02:00
committed by GitHub
parent 8cb93bf3e7
commit 1a8a19a9ed
3 changed files with 60 additions and 31 deletions
+7 -1
View File
@@ -496,13 +496,17 @@ type FakeBackendPlugin struct {
Decommissioned bool
Running bool
// ExitedCheckDoneOrStopped is used to signal that the Exited() or Stop() method has been called.
ExitedCheckDoneOrStopped chan struct{}
mutex sync.RWMutex
backendplugin.Plugin
}
func NewFakeBackendPlugin(managed bool) *FakeBackendPlugin {
return &FakeBackendPlugin{
Managed: managed,
Managed: managed,
ExitedCheckDoneOrStopped: make(chan struct{}),
}
}
@@ -519,6 +523,7 @@ func (p *FakeBackendPlugin) Stop(_ context.Context) error {
defer p.mutex.Unlock()
p.Running = false
p.StopCount++
go func() { p.ExitedCheckDoneOrStopped <- struct{}{} }()
return nil
}
@@ -544,6 +549,7 @@ func (p *FakeBackendPlugin) IsManaged() bool {
func (p *FakeBackendPlugin) Exited() bool {
p.mutex.RLock()
defer p.mutex.RUnlock()
go func() { p.ExitedCheckDoneOrStopped <- struct{}{} }()
return !p.Running
}