From 2fe1e37b179d258165cee8d31b134076f397b69a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 18 Mar 2026 01:00:55 +0800 Subject: [PATCH] fix(ccm,ocm): add missing isFirstUpdate to external credential usage logging --- service/ccm/credential_external.go | 6 ++++-- service/ocm/credential_external.go | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/service/ccm/credential_external.go b/service/ccm/credential_external.go index 40d2c3677..186d6d9d6 100644 --- a/service/ccm/credential_external.go +++ b/service/ccm/credential_external.go @@ -632,6 +632,7 @@ func (c *externalCredential) pollUsage() { } c.stateAccess.Lock() + isFirstUpdate := c.state.lastUpdated.IsZero() oldFiveHour := c.state.fiveHourUtilization oldWeekly := c.state.weeklyUtilization c.state.consecutivePollFailures = 0 @@ -649,7 +650,7 @@ func (c *externalCredential) pollUsage() { if c.state.hardRateLimited && time.Now().After(c.state.rateLimitResetAt) { c.state.hardRateLimited = false } - if int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { + if isFirstUpdate || int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { resetSuffix := "" if !c.state.weeklyReset.IsZero() { resetSuffix = ", resets=" + log.FormatDuration(time.Until(c.state.weeklyReset)) @@ -739,6 +740,7 @@ func (c *externalCredential) connectStatusStream(ctx context.Context) (statusStr } c.stateAccess.Lock() + isFirstUpdate := c.state.lastUpdated.IsZero() oldFiveHour := c.state.fiveHourUtilization oldWeekly := c.state.weeklyUtilization c.state.consecutivePollFailures = 0 @@ -756,7 +758,7 @@ func (c *externalCredential) connectStatusStream(ctx context.Context) (statusStr if c.state.hardRateLimited && time.Now().After(c.state.rateLimitResetAt) { c.state.hardRateLimited = false } - if int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { + if isFirstUpdate || int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { resetSuffix := "" if !c.state.weeklyReset.IsZero() { resetSuffix = ", resets=" + log.FormatDuration(time.Until(c.state.weeklyReset)) diff --git a/service/ocm/credential_external.go b/service/ocm/credential_external.go index 0ee1595d9..39dab378e 100644 --- a/service/ocm/credential_external.go +++ b/service/ocm/credential_external.go @@ -460,6 +460,7 @@ func (c *externalCredential) openReverseConnection(ctx context.Context) (net.Con func (c *externalCredential) updateStateFromHeaders(headers http.Header) { c.stateAccess.Lock() + isFirstUpdate := c.state.lastUpdated.IsZero() oldFiveHour := c.state.fiveHourUtilization oldWeekly := c.state.weeklyUtilization oldPlanWeight := c.state.remotePlanWeight @@ -515,7 +516,7 @@ func (c *externalCredential) updateStateFromHeaders(headers http.Header) { c.state.consecutivePollFailures = 0 c.state.lastUpdated = time.Now() } - if int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { + if isFirstUpdate || int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { resetSuffix := "" if !c.state.weeklyReset.IsZero() { resetSuffix = ", resets=" + log.FormatDuration(time.Until(c.state.weeklyReset)) @@ -673,6 +674,7 @@ func (c *externalCredential) pollUsage() { } c.stateAccess.Lock() + isFirstUpdate := c.state.lastUpdated.IsZero() oldFiveHour := c.state.fiveHourUtilization oldWeekly := c.state.weeklyUtilization c.state.consecutivePollFailures = 0 @@ -690,7 +692,7 @@ func (c *externalCredential) pollUsage() { if c.state.hardRateLimited && time.Now().After(c.state.rateLimitResetAt) { c.state.hardRateLimited = false } - if int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { + if isFirstUpdate || int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { resetSuffix := "" if !c.state.weeklyReset.IsZero() { resetSuffix = ", resets=" + log.FormatDuration(time.Until(c.state.weeklyReset)) @@ -780,6 +782,7 @@ func (c *externalCredential) connectStatusStream(ctx context.Context) (statusStr } c.stateAccess.Lock() + isFirstUpdate := c.state.lastUpdated.IsZero() oldFiveHour := c.state.fiveHourUtilization oldWeekly := c.state.weeklyUtilization c.state.consecutivePollFailures = 0 @@ -797,7 +800,7 @@ func (c *externalCredential) connectStatusStream(ctx context.Context) (statusStr if c.state.hardRateLimited && time.Now().After(c.state.rateLimitResetAt) { c.state.hardRateLimited = false } - if int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { + if isFirstUpdate || int(c.state.fiveHourUtilization*100) != int(oldFiveHour*100) || int(c.state.weeklyUtilization*100) != int(oldWeekly*100) { resetSuffix := "" if !c.state.weeklyReset.IsZero() { resetSuffix = ", resets=" + log.FormatDuration(time.Until(c.state.weeklyReset))