pkg/contention/contention.go
func (td *TimeoutDetector) Observe(which uint64) (bool, time.Duration) {
	td.mu.Lock()
	defer td.mu.Unlock()

	ok := true
	now := time.Now()
	exceed := time.Duration(0)

	if pt, found := td.records[which]; found {
		exceed = now.Sub(pt) - td.maxDuration
		if exceed > 0 {
			ok = false
		}
	}
	td.records[which] = now
	return ok, exceed
}
func (td *TimeoutDetector) Observe(which uint64) (bool, time.Duration) {
	td.mu.Lock()
	defer td.mu.Unlock()

	ok := true
	now := time.Now()
	exceed := time.Duration(0)

	if pt, found := td.records[which]; found {
		exceed = now.Sub(pt) - td.maxDuration
		if exceed > 0 {
			ok = false
		}
	}
	td.records[which] = now
	return ok, exceed
}
func ( td * TimeoutDetector ) Observe ( which uint64 ) ( bool , time . Duration ) { td . mu . Lock ( ) defer td . mu . Unlock ( ) ok := true now := time . Now ( ) exceed := time . Duration ( 0 ) if pt , found := td . records [ which ] ; found { exceed = now . Sub ( pt ) - td . maxDuration if exceed > 0 { ok = false } } td . records [ which ] = now return ok , exceed }
// Observe observes an event for given id. It returns false and exceeded duration
// if the interval is longer than the expectation.
Observe observes an event for given id . It returns false and exceeded duration if the interval is longer than the expectation .