Skip to content
This repository was archived by the owner on Jul 31, 2023. It is now read-only.

Commit 5fa069b

Browse files
authored
Initialize View Start Time During View Registration (#1215)
* Initialize view start time during view registration * Remove unnecessary start time initialization from reportUsage * Remove unnecessary start time check in toMetric
1 parent 1901b56 commit 5fa069b

File tree

2 files changed

+7
-14
lines changed

2 files changed

+7
-14
lines changed

stats/view/worker.go

+6-13
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ func (w *worker) start() {
277277
case cmd := <-w.c:
278278
cmd.handleCommand(w)
279279
case <-w.timer.C:
280-
w.reportUsage(time.Now())
280+
w.reportUsage()
281281
case <-w.quit:
282282
w.timer.Stop()
283283
close(w.c)
@@ -324,6 +324,7 @@ func (w *worker) tryRegisterView(v *View) (*viewInternal, error) {
324324
return x, nil
325325
}
326326
w.views[vi.view.Name] = vi
327+
w.startTimes[vi] = time.Now()
327328
ref := w.getMeasureRef(vi.view.Measure.Name())
328329
ref.views[vi] = struct{}{}
329330
return vi, nil
@@ -333,20 +334,17 @@ func (w *worker) unregisterView(v *viewInternal) {
333334
w.mu.Lock()
334335
defer w.mu.Unlock()
335336
delete(w.views, v.view.Name)
337+
delete(w.startTimes, v)
336338
if measure := w.measures[v.view.Measure.Name()]; measure != nil {
337339
delete(measure.views, v)
338340
}
339341
}
340342

341-
func (w *worker) reportView(v *viewInternal, now time.Time) {
343+
func (w *worker) reportView(v *viewInternal) {
342344
if !v.isSubscribed() {
343345
return
344346
}
345347
rows := v.collectedRows()
346-
_, ok := w.startTimes[v]
347-
if !ok {
348-
w.startTimes[v] = now
349-
}
350348
viewData := &Data{
351349
View: v.view,
352350
Start: w.startTimes[v],
@@ -360,11 +358,11 @@ func (w *worker) reportView(v *viewInternal, now time.Time) {
360358
}
361359
}
362360

363-
func (w *worker) reportUsage(now time.Time) {
361+
func (w *worker) reportUsage() {
364362
w.mu.Lock()
365363
defer w.mu.Unlock()
366364
for _, v := range w.views {
367-
w.reportView(v, now)
365+
w.reportView(v)
368366
}
369367
}
370368

@@ -373,11 +371,6 @@ func (w *worker) toMetric(v *viewInternal, now time.Time) *metricdata.Metric {
373371
return nil
374372
}
375373

376-
_, ok := w.startTimes[v]
377-
if !ok {
378-
w.startTimes[v] = now
379-
}
380-
381374
var startTime time.Time
382375
if v.metricDescriptor.Type == metricdata.TypeGaugeInt64 ||
383376
v.metricDescriptor.Type == metricdata.TypeGaugeFloat64 {

stats/view/worker_commands.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (cmd *unregisterFromViewReq) handleCommand(w *worker) {
9595
}
9696

9797
// Report pending data for this view before removing it.
98-
w.reportView(vi, time.Now())
98+
w.reportView(vi)
9999

100100
vi.unsubscribe()
101101
if !vi.isSubscribed() {

0 commit comments

Comments
 (0)