headSampleRate = upstreamSampleRate
} else {
headSampleRate := checkHeadSampleRate(req, headSampleRates, headCounts)
if headSampleRate > 0 && r < 1.0 / headSampleRate {
// We'll sample this when recording event below; propagate the
// decision downstream though.
} else {
// Clear out headSampleRate as this event didn't qualify for
// sampling. This is a sentinel value.
headSampleRate = -1.0
}
}
start := time.Now()
i, err := callAnotherService(r, headSampleRate)
resp.Write(i)
if headSampleRate > 0 {
RecordEvent(req, headSampleRate, start, err)
} else {
// Same as for head sampling, except here we make a tail sampling
// decision ...