Update caching logic to avoid map access
Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
parent
ce3871966e
commit
a1ba38056e
@ -177,25 +177,6 @@ func checkUnique(r *Registration) error {
|
|||||||
return nil
|
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
|
// DisableFilter filters out disabled plugins
|
||||||
type DisableFilter func(r *Registration) bool
|
type DisableFilter func(r *Registration) bool
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ type Local struct {
|
|||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
root string
|
root string
|
||||||
plugins *plugin.Set
|
plugins *plugin.Set
|
||||||
pluginsPB []api.Plugin
|
pluginCache []api.Plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = (api.IntrospectionClient)(&Local{})
|
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 {
|
func (l *Local) getPlugins() []api.Plugin {
|
||||||
if !plugin.AreRegisteredPluginsInitialized(l.plugins) {
|
|
||||||
return pluginsToPB(l.plugins.GetAll())
|
|
||||||
}
|
|
||||||
|
|
||||||
l.mu.Lock()
|
l.mu.Lock()
|
||||||
defer l.mu.Unlock()
|
defer l.mu.Unlock()
|
||||||
if l.pluginsPB == nil {
|
plugins := l.plugins.GetAll()
|
||||||
l.pluginsPB = pluginsToPB(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
|
// Server returns the local server information
|
||||||
|
Loading…
Reference in New Issue
Block a user