From 10793b985962ab37de8689bcc3d9c011be14037c Mon Sep 17 00:00:00 2001 From: rainzm Date: Wed, 21 Apr 2021 12:14:27 +0800 Subject: [PATCH] fix(region): make cloudprovider sync worker configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这个参数意味着,同时允许多少个 provider 来把自己同步的 region 任务放进后 面的队列。 进一步说,配置数量之外的 provider 必须等待前面的 provider 同步完所有的 region 之后,才有机会开始同步自己的region。 此限制的必要性不高,所以默认值设置比较大,为"10"。 --- pkg/compute/options/options.go | 1 + pkg/compute/service/service.go | 3 ++- pkg/compute/tasks/cloud_provider_sync_info_task.go | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/compute/options/options.go b/pkg/compute/options/options.go index d3f68b91e7..565de73ddb 100644 --- a/pkg/compute/options/options.go +++ b/pkg/compute/options/options.go @@ -127,6 +127,7 @@ type ComputeOptions struct { MinimalIpAddrReusedIntervalSeconds int `help:"Minimal seconds when a release IP address can be reallocate" default:"30"` CloudSyncWorkerCount int `help:"how many current synchronization threads" default:"5"` + CloudProviderSyncWorkerCount int `help:"how many current providers synchronize their regions, practically no limit" default:"10"` CloudAutoSyncIntervalSeconds int `help:"frequency to check auto sync tasks" default:"30"` DefaultSyncIntervalSeconds int `help:"minimal synchronization interval, default 15 minutes" default:"900"` MinimalSyncIntervalSeconds int `help:"minimal synchronization interval, default 30 minutes" default:"1800"` diff --git a/pkg/compute/service/service.go b/pkg/compute/service/service.go index 8e73c5d026..a06973b3e7 100644 --- a/pkg/compute/service/service.go +++ b/pkg/compute/service/service.go @@ -41,7 +41,7 @@ import ( _ "yunion.io/x/onecloud/pkg/compute/policy" _ "yunion.io/x/onecloud/pkg/compute/regiondrivers" _ "yunion.io/x/onecloud/pkg/compute/storagedrivers" - _ "yunion.io/x/onecloud/pkg/compute/tasks" + "yunion.io/x/onecloud/pkg/compute/tasks" "yunion.io/x/onecloud/pkg/controller/autoscaling" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/multicloud/esxi" @@ -86,6 +86,7 @@ func StartService() { setInfluxdbRetentionPolicy() models.InitSyncWorkers(options.Options.CloudSyncWorkerCount) + tasks.InitCloudproviderSyncWorkers(options.Options.CloudProviderSyncWorkerCount) var ( electObj *elect.Elect diff --git a/pkg/compute/tasks/cloud_provider_sync_info_task.go b/pkg/compute/tasks/cloud_provider_sync_info_task.go index 65ae3538e6..db9788e025 100644 --- a/pkg/compute/tasks/cloud_provider_sync_info_task.go +++ b/pkg/compute/tasks/cloud_provider_sync_info_task.go @@ -34,8 +34,8 @@ type CloudProviderSyncInfoTask struct { taskman.STask } -func init() { - syncWorker := appsrv.NewWorkerManager("CloudProviderSyncInfoTaskWorkerManager", 2, 512, true) +func InitCloudproviderSyncWorkers(count int) { + syncWorker := appsrv.NewWorkerManager("CloudProviderSyncInfoTaskWorkerManager", count, 512, true) taskman.RegisterTaskAndWorker(CloudProviderSyncInfoTask{}, syncWorker) }