Update caching logic to avoid map access
Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
		| @@ -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 | ||||
|  | ||||
|   | ||||
| @@ -55,7 +55,7 @@ type Local struct { | ||||
| 	mu          sync.Mutex | ||||
| 	root        string | ||||
| 	plugins     *plugin.Set | ||||
| 	pluginsPB []api.Plugin | ||||
| 	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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Derek McGowan
					Derek McGowan