fix: skip waiting if error occured (#337)

* fix: skip waiting if error occured

* Update internal/core/plugin_manager/watcher.go

Co-authored-by: Rhys <nghuutho74@gmail.com>

* fix: handle nil error channels in plugin manager

---------

Co-authored-by: Yeuoly <45712896+Yeuoly@users.noreply.github.com>
Co-authored-by: Yeuoly <admin@srmxy.cn>
This commit is contained in:
Rhys
2025-06-16 18:15:15 +07:00
committed by GitHub
parent 6cea2d401e
commit 3d1e2aba0e
+12 -5
View File
@@ -75,18 +75,25 @@ func (p *PluginManager) handleNewLocalPlugins() {
}
for _, plugin := range plugins {
log.Info("launching local plugin: %s", plugin.PluginID())
_, launchedChan, errChan, err := p.launchLocal(plugin)
if err != nil {
log.Error("launch local plugin failed: %s", err.Error())
}
// consume error, avoid deadlock
for err := range errChan {
log.Error("plugin launch error: %s", err.Error())
// avoid receiving nil channel
if errChan != nil {
// consume error, avoid deadlock
for err := range errChan {
log.Error("plugin launch error: %s", err.Error())
}
}
// wait for plugin launched
<-launchedChan
// avoid receiving nil channel
if launchedChan != nil {
// wait for plugin launched
<-launchedChan
}
}
}