diff --git a/plugin/plugin.go b/plugin/plugin.go index 02c3d197d..eb38c1271 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -177,25 +177,6 @@ func checkUnique(r *Registration) error { return nil } -// AreRegisteredPluginsInitialized returns all registered plugins are initialized -func AreRegisteredPluginsInitialized(plugins *Set) bool { - if len(register.r) != len(plugins.ordered) { - return false - } - for _, reg := range register.r { - byID, typeok := plugins.byTypeAndID[reg.Type] - if !typeok { - return false - } - - if _, ok := byID[reg.ID]; !ok { - return false - } - } - - return true -} - // DisableFilter filters out disabled plugins type DisableFilter func(r *Registration) bool diff --git a/services/introspection/local.go b/services/introspection/local.go index 110327f76..47388e437 100644 --- a/services/introspection/local.go +++ b/services/introspection/local.go @@ -52,10 +52,10 @@ func init() { // Local is a local implementation of the introspection service type Local struct { - mu sync.Mutex - root string - plugins *plugin.Set - pluginsPB []api.Plugin + mu sync.Mutex + root string + plugins *plugin.Set + pluginCache []api.Plugin } var _ = (api.IntrospectionClient)(&Local{}) @@ -90,16 +90,13 @@ func (l *Local) Plugins(ctx context.Context, req *api.PluginsRequest, _ ...grpc. } func (l *Local) getPlugins() []api.Plugin { - if !plugin.AreRegisteredPluginsInitialized(l.plugins) { - return pluginsToPB(l.plugins.GetAll()) - } - l.mu.Lock() defer l.mu.Unlock() - if l.pluginsPB == nil { - l.pluginsPB = pluginsToPB(l.plugins.GetAll()) + plugins := l.plugins.GetAll() + if l.pluginCache == nil || len(plugins) != len(l.pluginCache) { + l.pluginCache = pluginsToPB(plugins) } - return l.pluginsPB + return l.pluginCache } // Server returns the local server information