From aa0915b55a67150fadc6436b094c2e298458125e Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Thu, 14 Jan 2021 09:50:16 +0800 Subject: [PATCH] fix(cloudevent): optimized cloudevent sync --- pkg/multicloud/aws/cloudtrail.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/pkg/multicloud/aws/cloudtrail.go b/pkg/multicloud/aws/cloudtrail.go index ee47734125..ce78d443d3 100644 --- a/pkg/multicloud/aws/cloudtrail.go +++ b/pkg/multicloud/aws/cloudtrail.go @@ -22,6 +22,7 @@ import ( "github.com/aws/aws-sdk-go/service/cloudtrail" "yunion.io/x/jsonutils" + "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/onecloud/pkg/cloudprovider" @@ -158,9 +159,19 @@ func (self *SAwsClient) LookupEvents(start, end time.Time) ([]SEvent, error) { } func (self *SRegion) GetICloudEvents(start time.Time, end time.Time, withReadEvent bool) ([]cloudprovider.ICloudEvent, error) { - events, err := self.client.LookupEvents(start, end) - if err != nil { - return nil, errors.Wrapf(err, "LookupEvents(%s, %s)", start, end) + var events []SEvent + var err error + for { + events, err = self.client.LookupEvents(start, end) + if err != nil { + if strings.Contains(err.Error(), "ThrottlingException") { + log.Warningf("LookupEvents ThrottlingException, try after 3 seconds") + time.Sleep(time.Second * 3) + continue + } + return nil, errors.Wrapf(err, "LookupEvents(%s, %s)", start, end) + } + break } ret := []cloudprovider.ICloudEvent{} for i := range events {