Merge pull request #9278 from xiang90/jitter

v3rpc: add jitter to progress notification
This commit is contained in:
Xiang Li 2018-02-05 12:43:51 -08:00 committed by GitHub
commit c80ca24b54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,6 +17,7 @@ package v3rpc
import ( import (
"context" "context"
"io" "io"
"math/rand"
"sync" "sync"
"time" "time"
@ -57,8 +58,15 @@ var (
func GetProgressReportInterval() time.Duration { func GetProgressReportInterval() time.Duration {
progressReportIntervalMu.RLock() progressReportIntervalMu.RLock()
defer progressReportIntervalMu.RUnlock() interval := progressReportInterval
return progressReportInterval progressReportIntervalMu.RUnlock()
// add rand(1/10*progressReportInterval) as jitter so that etcdserver will not
// send progress notifications to watchers around the same time even when watchers
// are created around the same time (which is common when a client restarts itself).
jitter := time.Duration(rand.Int63n(int64(interval) / 10))
return interval + jitter
} }
func SetProgressReportInterval(newTimeout time.Duration) { func SetProgressReportInterval(newTimeout time.Duration) {