MCPcopy Create free account
hub / github.com/cortexproject/cortex / HeartBeat

Method HeartBeat

pkg/compactor/visit_marker.go:63–100  ·  view source on GitHub ↗
(ctx context.Context, errChan <-chan error, visitMarkerFileUpdateInterval time.Duration, deleteOnExit bool)

Source from the content-addressed store, hash-verified

61}
62
63func (v *VisitMarkerManager) HeartBeat(ctx context.Context, errChan <-chan error, visitMarkerFileUpdateInterval time.Duration, deleteOnExit bool) {
64 level.Info(v.getLogger()).Log("msg", "start visit marker heart beat")
65 ticker := time.NewTicker(visitMarkerFileUpdateInterval)
66 defer ticker.Stop()
67heartBeat:
68 for {
69 v.MarkWithStatus(ctx, InProgress)
70
71 select {
72 case <-ctx.Done():
73 level.Warn(v.getLogger()).Log("msg", "visit marker heart beat got cancelled")
74 v.MarkWithStatus(context.Background(), Pending)
75 break heartBeat
76 case <-ticker.C:
77 continue
78 case err := <-errChan:
79 if err == nil {
80 level.Info(v.getLogger()).Log("msg", "update visit marker to completed status")
81 v.MarkWithStatus(ctx, Completed)
82 } else {
83 level.Warn(v.getLogger()).Log("msg", "stop visit marker heart beat due to error", "err", err)
84 if compact.IsHaltError(err) {
85 level.Info(v.getLogger()).Log("msg", "update visit marker to failed status", "err", err)
86 v.MarkWithStatus(ctx, Failed)
87 } else {
88 level.Info(v.getLogger()).Log("msg", "update visit marker to pending status", "err", err)
89 v.MarkWithStatus(ctx, Pending)
90 }
91 }
92 break heartBeat
93 }
94 }
95 level.Info(v.getLogger()).Log("msg", "stop visit marker heart beat")
96 if deleteOnExit {
97 level.Info(v.getLogger()).Log("msg", "delete visit marker when exiting heart beat")
98 v.DeleteVisitMarker(context.Background())
99 }
100}
101
102func (v *VisitMarkerManager) MarkWithStatus(ctx context.Context, status VisitStatus) {
103 v.visitMarker.UpdateStatus(v.ownerIdentifier, status)

Callers 4

TestHeartBeatFunction · 0.95
PlanWithPartitionMethod · 0.95
cleanUpActiveUsersMethod · 0.80
cleanDeletedUsersMethod · 0.80

Calls 6

getLoggerMethod · 0.95
MarkWithStatusMethod · 0.95
DeleteVisitMarkerMethod · 0.95
DoneMethod · 0.80
StopMethod · 0.65
LogMethod · 0.45

Tested by 1

TestHeartBeatFunction · 0.76