From 7d7f2d92620dc41b1012168ff0a43f2d8eb5ec1d Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Thu, 16 Jul 2020 10:36:08 +0200 Subject: [PATCH] Provisioning: Fix bug when provision app plugins using Enterprise edition (#26340) In OSS provisioning service init after plugin registration, but in Enterprise it's the opposite order and installed app plugin check fails. This adjusts service registry init priority to make sure plugins are registered before provisioning inits. Which issue(s) this PR fixes: Fixes #26336 (cherry picked from commit b97d1f41707dd9311ecbe8bf672a5ed028700095) --- pkg/plugins/backendplugin/manager.go | 6 +----- pkg/registry/registry.go | 7 ++++--- pkg/services/provisioning/provisioning.go | 20 ++++++++++++-------- pkg/services/search/service.go | 6 +----- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/pkg/plugins/backendplugin/manager.go b/pkg/plugins/backendplugin/manager.go index fe47dc77ad6..2292c8d8519 100644 --- a/pkg/plugins/backendplugin/manager.go +++ b/pkg/plugins/backendplugin/manager.go @@ -34,11 +34,7 @@ var ( ) func init() { - registry.Register(®istry.Descriptor{ - Name: "BackendPluginManager", - Instance: &manager{}, - InitPriority: registry.Low, - }) + registry.RegisterService(&manager{}) } // Manager manages backend plugins. diff --git a/pkg/registry/registry.go b/pkg/registry/registry.go index b367639fee9..5894a657286 100644 --- a/pkg/registry/registry.go +++ b/pkg/registry/registry.go @@ -20,7 +20,7 @@ func RegisterService(instance Service) { services = append(services, &Descriptor{ Name: reflect.TypeOf(instance).Elem().Name(), Instance: instance, - InitPriority: Low, + InitPriority: Medium, }) } @@ -114,6 +114,7 @@ func IsDisabled(srv Service) bool { type Priority int const ( - High Priority = 100 - Low Priority = 0 + High Priority = 100 + Medium Priority = 50 + Low Priority = 0 ) diff --git a/pkg/services/provisioning/provisioning.go b/pkg/services/provisioning/provisioning.go index f296b14a02d..980303ffe8e 100644 --- a/pkg/services/provisioning/provisioning.go +++ b/pkg/services/provisioning/provisioning.go @@ -25,14 +25,18 @@ type ProvisioningService interface { } func init() { - registry.RegisterService(NewProvisioningServiceImpl( - func(path string) (dashboards.DashboardProvisioner, error) { - return dashboards.New(path) - }, - notifiers.Provision, - datasources.Provision, - plugins.Provision, - )) + registry.Register(®istry.Descriptor{ + Name: "ProvisioningService", + Instance: NewProvisioningServiceImpl( + func(path string) (dashboards.DashboardProvisioner, error) { + return dashboards.New(path) + }, + notifiers.Provision, + datasources.Provision, + plugins.Provision, + ), + InitPriority: registry.Low, + }) } func NewProvisioningServiceImpl( diff --git a/pkg/services/search/service.go b/pkg/services/search/service.go index 2db02143710..7bfae6cf02f 100644 --- a/pkg/services/search/service.go +++ b/pkg/services/search/service.go @@ -11,11 +11,7 @@ import ( ) func init() { - registry.Register(®istry.Descriptor{ - Name: "SearchService", - Instance: &SearchService{}, - InitPriority: 20, - }) + registry.RegisterService(&SearchService{}) } type Query struct {