From bb57530794be11782cf023e40a1c685bf426f687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Mon, 19 Aug 2024 10:17:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(cloudmon):=20=E9=81=BF=E5=85=8Dcloudmon?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A0=86=E7=A7=AF=E5=AF=BC=E8=87=B4=E5=A4=A7?= =?UTF-8?q?=E9=87=8F=E8=AF=B7=E6=B1=82=20(#21049)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/cloudmon/resources/resources.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/pkg/cloudmon/resources/resources.go b/pkg/cloudmon/resources/resources.go index 9055d5ec41..fe3d068679 100644 --- a/pkg/cloudmon/resources/resources.go +++ b/pkg/cloudmon/resources/resources.go @@ -447,10 +447,16 @@ func (self *SResources) Init(ctx context.Context, userCred mcclient.TokenCredent } } +var incrementSync = false + func (self *SResources) IncrementSync(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) { - if isStart { + if isStart || incrementSync { return } + incrementSync = true + defer func() { + incrementSync = false + }() err := func() error { errs := []error{} err := self.Cloudaccounts.increment(ctx) @@ -516,10 +522,16 @@ func (self *SResources) IncrementSync(ctx context.Context, userCred mcclient.Tok } } +var decrementSync = false + func (self *SResources) DecrementSync(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) { - if isStart { + if isStart || decrementSync { return } + decrementSync = true + defer func() { + decrementSync = false + }() err := func() error { errs := []error{} err := self.Cloudaccounts.decrement(ctx) @@ -585,10 +597,16 @@ func (self *SResources) DecrementSync(ctx context.Context, userCred mcclient.Tok } } +var updateSync = false + func (self *SResources) UpdateSync(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) { - if isStart { + if isStart || updateSync { return } + updateSync = true + defer func() { + updateSync = false + }() err := func() error { errs := []error{} err := self.Cloudaccounts.update(ctx)