MCPcopy
hub / github.com/cortexlabs/cortex / shouldBlock

Function shouldBlock

pkg/lib/telemetry/error_cache.go:47–89  ·  view source on GitHub ↗
(err error, backoffMode BackoffMode)

Source from the content-addressed store, hash-verified

45}
46
47func shouldBlock(err error, backoffMode BackoffMode) bool {
48 if backoffMode == NoBackoff {
49 return false
50 }
51
52 errMsg := errors.MessageFirstLine(err)
53 now := time.Now()
54
55 if backoffMode == BackoffAnyMessages {
56 errMsg = "<msg>"
57 }
58
59 defer func() {
60 go cleanupCache()
61 }()
62
63 _errorCache.Lock()
64 defer _errorCache.Unlock()
65
66 errStatus, ok := _errorCache.m[errMsg]
67
68 if !ok || time.Since(errStatus.LastSeenTime) > _cacheEvictionPeriod {
69 _errorCache.m[errMsg] = &errorStatus{
70 LastReportTime: now,
71 LastSeenTime: now,
72 CoolDownPeriod: _initialCoolDownPeriod,
73 }
74 return false
75 }
76
77 if time.Since(errStatus.LastReportTime) > errStatus.CoolDownPeriod {
78 errStatus.LastSeenTime = now
79 errStatus.LastReportTime = now
80 errStatus.CoolDownPeriod = time.Duration(float64(errStatus.CoolDownPeriod.Nanoseconds())*_coolDownFactor) * time.Nanosecond
81 if errStatus.CoolDownPeriod > _maxCoolDownPeriod {
82 errStatus.CoolDownPeriod = _maxCoolDownPeriod
83 }
84 return false
85 }
86
87 errStatus.LastSeenTime = now
88 return true
89}
90
91func cleanupCache() {
92 staleErrorMessages := findStaleCachedErrors()

Callers 1

ErrorFunction · 0.85

Calls 2

MessageFirstLineFunction · 0.92
cleanupCacheFunction · 0.85

Tested by

no test coverage detected