mirror of
https://github.com/kubernetes/client-go.git
synced 2025-09-13 05:41:35 +00:00
Merge pull request #63700 from zjj2wry/leaderelection
Automatic merge from submit-queue (batch tested with PRs 64895, 64938, 63700, 65050, 64957). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. enhance leaderelection code **What this PR does / why we need it**: **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: **Release note**: ```release-note NONE ``` Kubernetes-commit: 8850871891f345628f01dbef4ede727d74dd2113
This commit is contained in:
102
Godeps/Godeps.json
generated
102
Godeps/Godeps.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go",
|
||||
"GoVersion": "go1.9",
|
||||
"GoVersion": "go1.10",
|
||||
"GodepVersion": "v80",
|
||||
"Packages": [
|
||||
"./..."
|
||||
@@ -388,203 +388,203 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/testing",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/fields",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/labels",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/selection",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/types",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/version",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/watch",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
|
||||
"Rev": "4b5680bfe1b263cd43815e286098b76c1c9fcb7b"
|
||||
"Rev": "783dfbe86ff74ef4a6e1243688e1585ac243f8e7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
|
||||
|
@@ -130,10 +130,6 @@ type LeaderCallbacks struct {
|
||||
}
|
||||
|
||||
// LeaderElector is a leader election client.
|
||||
//
|
||||
// possible future methods:
|
||||
// * (le *LeaderElector) IsLeader()
|
||||
// * (le *LeaderElector) GetLeader()
|
||||
type LeaderElector struct {
|
||||
config LeaderElectionConfig
|
||||
// internal bookkeeping
|
||||
@@ -259,14 +255,14 @@ func (le *LeaderElector) tryAcquireOrRenew() bool {
|
||||
le.observedTime = time.Now()
|
||||
}
|
||||
if le.observedTime.Add(le.config.LeaseDuration).After(now.Time) &&
|
||||
oldLeaderElectionRecord.HolderIdentity != le.config.Lock.Identity() {
|
||||
!le.IsLeader() {
|
||||
glog.V(4).Infof("lock is held by %v and has not yet expired", oldLeaderElectionRecord.HolderIdentity)
|
||||
return false
|
||||
}
|
||||
|
||||
// 3. We're going to try to update. The leaderElectionRecord is set to it's default
|
||||
// here. Let's correct it before updating.
|
||||
if oldLeaderElectionRecord.HolderIdentity == le.config.Lock.Identity() {
|
||||
if le.IsLeader() {
|
||||
leaderElectionRecord.AcquireTime = oldLeaderElectionRecord.AcquireTime
|
||||
leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions
|
||||
} else {
|
||||
@@ -283,12 +279,12 @@ func (le *LeaderElector) tryAcquireOrRenew() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (l *LeaderElector) maybeReportTransition() {
|
||||
if l.observedRecord.HolderIdentity == l.reportedLeader {
|
||||
func (le *LeaderElector) maybeReportTransition() {
|
||||
if le.observedRecord.HolderIdentity == le.reportedLeader {
|
||||
return
|
||||
}
|
||||
l.reportedLeader = l.observedRecord.HolderIdentity
|
||||
if l.config.Callbacks.OnNewLeader != nil {
|
||||
go l.config.Callbacks.OnNewLeader(l.reportedLeader)
|
||||
le.reportedLeader = le.observedRecord.HolderIdentity
|
||||
if le.config.Callbacks.OnNewLeader != nil {
|
||||
go le.config.Callbacks.OnNewLeader(le.reportedLeader)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user