From 13d152a873bc326ecb623dfe86a359c0ab724802 Mon Sep 17 00:00:00 2001 From: Hongchao Deng Date: Mon, 23 Nov 2015 16:36:23 -0800 Subject: [PATCH] RateLimiter: change CanAccept() to TryAccept() --- pkg/apiserver/handlers_test.go | 2 +- pkg/controller/node/rate_limited_queue.go | 2 +- pkg/kubelet/dockertools/docker.go | 2 +- pkg/util/throttle.go | 9 +++++---- pkg/util/throttle_test.go | 10 +++++----- plugin/pkg/scheduler/scheduler_test.go | 4 ++-- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/pkg/apiserver/handlers_test.go b/pkg/apiserver/handlers_test.go index cabac4b8ea3..53078ec7557 100644 --- a/pkg/apiserver/handlers_test.go +++ b/pkg/apiserver/handlers_test.go @@ -35,7 +35,7 @@ import ( type fakeRL bool func (fakeRL) Stop() {} -func (f fakeRL) CanAccept() bool { return bool(f) } +func (f fakeRL) TryAccept() bool { return bool(f) } func (f fakeRL) Accept() {} func expectHTTP(url string, code int, t *testing.T) { diff --git a/pkg/controller/node/rate_limited_queue.go b/pkg/controller/node/rate_limited_queue.go index 4545243a2e2..e934d4b4ae0 100644 --- a/pkg/controller/node/rate_limited_queue.go +++ b/pkg/controller/node/rate_limited_queue.go @@ -163,7 +163,7 @@ func (q *RateLimitedTimedQueue) Try(fn ActionFunc) { val, ok := q.queue.Head() for ok { // rate limit the queue checking - if !q.limiter.CanAccept() { + if !q.limiter.TryAccept() { glog.V(10).Info("Try rate limitted...") // Try again later break diff --git a/pkg/kubelet/dockertools/docker.go b/pkg/kubelet/dockertools/docker.go index 3ed9b9047c6..6fe8ce5bf03 100644 --- a/pkg/kubelet/dockertools/docker.go +++ b/pkg/kubelet/dockertools/docker.go @@ -197,7 +197,7 @@ func (p dockerPuller) Pull(image string, secrets []api.Secret) error { } func (p throttledDockerPuller) Pull(image string, secrets []api.Secret) error { - if p.limiter.CanAccept() { + if p.limiter.TryAccept() { return p.puller.Pull(image, secrets) } return fmt.Errorf("pull QPS exceeded.") diff --git a/pkg/util/throttle.go b/pkg/util/throttle.go index 43fdc0a9462..b7d7785d90d 100644 --- a/pkg/util/throttle.go +++ b/pkg/util/throttle.go @@ -19,8 +19,9 @@ package util import "github.com/juju/ratelimit" type RateLimiter interface { - // CanAccept returns true if the rate is below the limit, false otherwise - CanAccept() bool + // TryAccept returns true if a token is taken immediately. Otherwise, + // it returns false. + TryAccept() bool // Accept returns once a token becomes available. Accept() // Stop stops the rate limiter, subsequent calls to CanAccept will return false @@ -47,7 +48,7 @@ func NewFakeRateLimiter() RateLimiter { return &fakeRateLimiter{} } -func (t *tickRateLimiter) CanAccept() bool { +func (t *tickRateLimiter) TryAccept() bool { return t.limiter.TakeAvailable(1) == 1 } @@ -59,7 +60,7 @@ func (t *tickRateLimiter) Accept() { func (t *tickRateLimiter) Stop() { } -func (t *fakeRateLimiter) CanAccept() bool { +func (t *fakeRateLimiter) TryAccept() bool { return true } diff --git a/pkg/util/throttle_test.go b/pkg/util/throttle_test.go index b4b145b79db..b75553df17a 100644 --- a/pkg/util/throttle_test.go +++ b/pkg/util/throttle_test.go @@ -24,28 +24,28 @@ import ( func TestBasicThrottle(t *testing.T) { r := NewTokenBucketRateLimiter(1, 3) for i := 0; i < 3; i++ { - if !r.CanAccept() { + if !r.TryAccept() { t.Error("unexpected false accept") } } - if r.CanAccept() { + if r.TryAccept() { t.Error("unexpected true accept") } } func TestIncrementThrottle(t *testing.T) { r := NewTokenBucketRateLimiter(1, 1) - if !r.CanAccept() { + if !r.TryAccept() { t.Error("unexpected false accept") } - if r.CanAccept() { + if r.TryAccept() { t.Error("unexpected true accept") } // Allow to refill time.Sleep(2 * time.Second) - if !r.CanAccept() { + if !r.TryAccept() { t.Error("unexpected false accept") } } diff --git a/plugin/pkg/scheduler/scheduler_test.go b/plugin/pkg/scheduler/scheduler_test.go index 6449e6b4665..e776fa8ee75 100644 --- a/plugin/pkg/scheduler/scheduler_test.go +++ b/plugin/pkg/scheduler/scheduler_test.go @@ -302,14 +302,14 @@ type FakeRateLimiter struct { acceptValues []bool } -func (fr *FakeRateLimiter) CanAccept() bool { +func (fr *FakeRateLimiter) TryAccept() bool { return true } func (fr *FakeRateLimiter) Stop() {} func (fr *FakeRateLimiter) Accept() { - fr.acceptValues = append(fr.acceptValues, fr.r.CanAccept()) + fr.acceptValues = append(fr.acceptValues, fr.r.TryAccept()) } func TestSchedulerRateLimitsBinding(t *testing.T) {