From 5ee4f439658608537e3c73b0146b681883bc866d Mon Sep 17 00:00:00 2001 From: Geoff Greer Date: Thu, 19 Dec 2024 15:13:58 -0800 Subject: [PATCH] Log a maximum of once every 10 seconds for each resource type when syncing. Use better names for counts. --- pkg/sync/syncer.go | 54 ++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/pkg/sync/syncer.go b/pkg/sync/syncer.go index 0865153d..dfb493af 100644 --- a/pkg/sync/syncer.go +++ b/pkg/sync/syncer.go @@ -46,9 +46,20 @@ type ProgressCounts struct { ResourceTypes int Resources map[string]int EntitlementsProgress map[string]int - LastEntitlementLog time.Time + LastEntitlementLog map[string]time.Time GrantsProgress map[string]int - LastGrantLog time.Time + LastGrantLog map[string]time.Time +} + +// TODO: use a mutex or a syncmap for when this code becomes parallel +func NewProgressCounts() *ProgressCounts { + return &ProgressCounts{ + Resources: make(map[string]int), + EntitlementsProgress: make(map[string]int), + LastEntitlementLog: make(map[string]time.Time), + GrantsProgress: make(map[string]int), + LastGrantLog: make(map[string]time.Time), + } } func (p *ProgressCounts) LogResourceTypesProgress(ctx context.Context) { @@ -73,23 +84,24 @@ func (p *ProgressCounts) LogEntitlementsProgress(ctx context.Context, resourceTy case entitlementsProgress > resources: l.Error("more entitlement resources than resources", zap.String("resource_type_id", resourceType), - zap.Int("entitlement_progress", entitlementsProgress), - zap.Int("resources", resources), + zap.Int("synced", entitlementsProgress), + zap.Int("total", resources), ) case percentComplete == 100: l.Info("Synced entitlements", zap.String("resource_type_id", resourceType), zap.Int("count", entitlementsProgress), + zap.Int("total", resources), ) - p.LastEntitlementLog = time.Time{} - case time.Since(p.LastEntitlementLog) > 10*time.Second: + p.LastEntitlementLog[resourceType] = time.Time{} + case time.Since(p.LastEntitlementLog[resourceType]) > 10*time.Second: l.Info("Syncing entitlements", zap.String("resource_type_id", resourceType), - zap.Int("entitlement_progress", entitlementsProgress), - zap.Int("resources", resources), + zap.Int("synced", entitlementsProgress), + zap.Int("total", resources), zap.Int("percent_complete", percentComplete), ) - p.LastEntitlementLog = time.Now() + p.LastEntitlementLog[resourceType] = time.Now() } } @@ -103,23 +115,24 @@ func (p *ProgressCounts) LogGrantsProgress(ctx context.Context, resourceType str case grantsProgress > resources: l.Error("more grant resources than resources", zap.String("resource_type_id", resourceType), - zap.Int("grant_progress", grantsProgress), - zap.Int("resources", resources), + zap.Int("synced", grantsProgress), + zap.Int("total", resources), ) case percentComplete == 100: l.Info("Synced grants", zap.String("resource_type_id", resourceType), zap.Int("count", grantsProgress), + zap.Int("total", resources), ) - p.LastGrantLog = time.Time{} - case time.Since(p.LastGrantLog) > 10*time.Second: + p.LastGrantLog[resourceType] = time.Time{} + case time.Since(p.LastGrantLog[resourceType]) > 10*time.Second: l.Info("Syncing grants", zap.String("resource_type_id", resourceType), - zap.Int("grant_progress", grantsProgress), - zap.Int("resources", resources), + zap.Int("synced", grantsProgress), + zap.Int("total", resources), zap.Int("percent_complete", percentComplete), ) - p.LastGrantLog = time.Now() + p.LastGrantLog[resourceType] = time.Now() } } @@ -136,7 +149,7 @@ type syncer struct { tmpDir string skipFullSync bool lastCheckPointTime time.Time - counts ProgressCounts + counts *ProgressCounts skipEGForResourceType map[string]bool } @@ -1690,12 +1703,7 @@ func NewSyncer(ctx context.Context, c types.ConnectorClient, opts ...SyncOpt) (S s := &syncer{ connector: c, skipEGForResourceType: make(map[string]bool), - counts: ProgressCounts{ - ResourceTypes: 0, - Resources: make(map[string]int), - GrantsProgress: make(map[string]int), - EntitlementsProgress: make(map[string]int), - }, + counts: NewProgressCounts(), } for _, o := range opts {