Skip to content
This repository was archived by the owner on Oct 21, 2020. It is now read-only.

Commit 52ebca0

Browse files
author
Matthew Wong
committed
Move DefaultLeaseDuration... parameters to controller pkg and flesh out code doc comments
1 parent 53671a2 commit 52ebca0

File tree

6 files changed

+48
-30
lines changed

6 files changed

+48
-30
lines changed

aws/efs/cmd/efs-provisioner/efs-provisioner.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
"github.com/golang/glog"
3434
"github.com/kubernetes-incubator/external-storage/aws/efs/pkg/gidallocator"
3535
"github.com/kubernetes-incubator/external-storage/lib/controller"
36-
"github.com/kubernetes-incubator/external-storage/lib/leaderelection"
3736
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3837
"k8s.io/apimachinery/pkg/util/wait"
3938
"k8s.io/client-go/kubernetes"
@@ -49,10 +48,10 @@ const (
4948
resyncPeriod = 15 * time.Second
5049
exponentialBackOffOnError = true
5150
failedRetryThreshold = 5
52-
leasePeriod = leaderelection.DefaultLeaseDuration
53-
retryPeriod = leaderelection.DefaultRetryPeriod
54-
renewDeadline = leaderelection.DefaultRenewDeadline
55-
termLimit = leaderelection.DefaultTermLimit
51+
leasePeriod = controller.DefaultLeaseDuration
52+
retryPeriod = controller.DefaultRetryPeriod
53+
renewDeadline = controller.DefaultRenewDeadline
54+
termLimit = controller.DefaultTermLimit
5655
)
5756

5857
type efsProvisioner struct {

gluster/block/glusterblock-provisioner.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828

2929
"github.com/golang/glog"
3030
"github.com/kubernetes-incubator/external-storage/lib/controller"
31-
"github.com/kubernetes-incubator/external-storage/lib/leaderelection"
3231
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3332
"k8s.io/apimachinery/pkg/types"
3433
"k8s.io/apimachinery/pkg/util/uuid"
@@ -47,10 +46,10 @@ const (
4746
failedRetryThreshold = 5
4847
defaultExecPath = "./createiscsi"
4948
secretKeyName = "key"
50-
leasePeriod = leaderelection.DefaultLeaseDuration
51-
retryPeriod = leaderelection.DefaultRetryPeriod
52-
renewDeadline = leaderelection.DefaultRenewDeadline
53-
termLimit = leaderelection.DefaultTermLimit
49+
leasePeriod = controller.DefaultLeaseDuration
50+
retryPeriod = controller.DefaultRetryPeriod
51+
renewDeadline = controller.DefaultRenewDeadline
52+
termLimit = controller.DefaultTermLimit
5453
)
5554

5655
type glusterBlockProvisioner struct {

lib/controller/controller.go

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,27 @@ const createProvisionedPVRetryCount = 5
6868
// Interval between retries when we create a PV object for a provisioned volume.
6969
const createProvisionedPVInterval = 10 * time.Second
7070

71+
const (
72+
// DefaultLeaseDuration is a suggested controller LeaseDuration:
73+
// LeaseDuration is the duration that non-leader candidates will
74+
// wait to force acquire leadership. This is measured against time of
75+
// last observed ack.
76+
DefaultLeaseDuration = 15 * time.Second
77+
// DefaultRenewDeadline is a suggested controller RenewDeadline:
78+
// RenewDeadline is the duration that the acting master will retry
79+
// refreshing leadership before giving up.
80+
DefaultRenewDeadline = 10 * time.Second
81+
// DefaultRetryPeriod is a suggested controller RetryPeriod:
82+
// RetryPeriod is the duration the LeaderElector clients should wait
83+
// between tries of actions.
84+
DefaultRetryPeriod = 2 * time.Second
85+
// DefaultTermLimit is a suggested controller TermLimit:
86+
// TermLimit is the maximum duration that a leader may remain the leader
87+
// to complete the task before it must give up its leadership. 0 for forever
88+
// or indefinite.
89+
DefaultTermLimit = 30 * time.Second
90+
)
91+
7192
// ProvisionController is a controller that provisions PersistentVolumes for
7293
// PersistentVolumeClaims.
7394
type ProvisionController struct {
@@ -119,24 +140,29 @@ type ProvisionController struct {
119140
// Interval between retries when we create a PV object for a provisioned volume.
120141
createProvisionedPVInterval time.Duration
121142

122-
// Identity of this controller, generated at creation time.
143+
// Identity of this controller, generated at creation time and not persisted
144+
// across restarts. Useful only for debugging, for seeing the source of
145+
// events. controller.provisioner may have its own, different notion of
146+
// identity which may/may not persist across restarts
123147
identity types.UID
124148

125-
// Parameters of LeaderElectionConfig: set to defaults except in tests
149+
// Parameters of leaderelection.LeaderElectionConfig. Leader election is for
150+
// when multiple controllers are running: they race to lock (lead) every PVC
151+
// so that only one calls Provision for it (saving API calls, CPU cycles...)
152+
// Descriptions of each can be found in the leaderelection package and
153+
// reproduced above (DefaultLeaseDuration...)
126154
leaseDuration, renewDeadline, retryPeriod, termLimit time.Duration
127155

128156
// Map of claim UID to LeaderElector: for checking if this controller
129157
// is the leader of a given claim
130158
leaderElectors map[types.UID]*leaderelection.LeaderElector
159+
mapMutex *sync.Mutex
131160

132-
mapMutex *sync.Mutex
133-
134-
// threshold for max number of retries on failure of provisioner
161+
// Threshold for max number of retries on failure of provisioner
135162
failedRetryThreshold int
136163

137-
// map of failed claims
138-
failedClaimsStats map[types.UID]int
139-
164+
// Map of failed claims
165+
failedClaimsStats map[types.UID]int
140166
failedClaimsStatsMutex *sync.Mutex
141167
}
142168

lib/controller/controller_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"testing"
2626
"time"
2727

28-
"github.com/kubernetes-incubator/external-storage/lib/leaderelection"
2928
rl "github.com/kubernetes-incubator/external-storage/lib/leaderelection/resourcelock"
3029
"k8s.io/apimachinery/pkg/api/resource"
3130
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -246,7 +245,7 @@ func TestMultipleControllers(t *testing.T) {
246245
ctrls := make([]*ProvisionController, test.numControllers)
247246
stopChs := make([]chan struct{}, test.numControllers)
248247
for i := 0; i < test.numControllers; i++ {
249-
ctrls[i] = NewProvisionController(client, 15*time.Second, test.provisionerName, provisioner, "v1.5.0", false, failedRetryThreshold, leaderelection.DefaultLeaseDuration, leaderelection.DefaultRenewDeadline, leaderelection.DefaultRetryPeriod, leaderelection.DefaultTermLimit)
248+
ctrls[i] = NewProvisionController(client, 15*time.Second, test.provisionerName, provisioner, "v1.5.0", false, failedRetryThreshold, DefaultLeaseDuration, DefaultRenewDeadline, DefaultRetryPeriod, DefaultTermLimit)
250249
ctrls[i].createProvisionedPVInterval = 10 * time.Millisecond
251250
ctrls[i].claimSource = claimSource
252251
ctrls[i].claims.Add(newClaim("claim-1", "uid-1-1", "class-1", "", nil))

lib/leaderelection/leaderelection.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,7 @@ import (
3939
)
4040

4141
const (
42-
JitterFactor = 1.2
43-
DefaultLeaseDuration = 15 * time.Second
44-
DefaultRenewDeadline = 10 * time.Second
45-
DefaultRetryPeriod = 2 * time.Second
46-
DefaultTermLimit = 30 * time.Second
42+
JitterFactor = 1.2
4743
)
4844

4945
// NewLeaderElector creates a LeaderElector from a LeaderElecitionConfig

nfs/cmd/nfs-provisioner/main.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323

2424
"github.com/golang/glog"
2525
"github.com/kubernetes-incubator/external-storage/lib/controller"
26-
"github.com/kubernetes-incubator/external-storage/lib/leaderelection"
2726
"github.com/kubernetes-incubator/external-storage/nfs/pkg/server"
2827
vol "github.com/kubernetes-incubator/external-storage/nfs/pkg/volume"
2928
"k8s.io/apimachinery/pkg/util/validation"
@@ -50,10 +49,10 @@ var (
5049
const (
5150
exportDir = "/export"
5251
ganeshaConfig = "/export/vfs.conf"
53-
leasePeriod = leaderelection.DefaultLeaseDuration
54-
retryPeriod = leaderelection.DefaultRetryPeriod
55-
renewDeadline = leaderelection.DefaultRenewDeadline
56-
termLimit = leaderelection.DefaultTermLimit
52+
leasePeriod = controller.DefaultLeaseDuration
53+
retryPeriod = controller.DefaultRetryPeriod
54+
renewDeadline = controller.DefaultRenewDeadline
55+
termLimit = controller.DefaultTermLimit
5756
)
5857

5958
func main() {

0 commit comments

Comments
 (0)