mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-10 21:50:05 +00:00
Don't process events until fully initialized.
We do not want to process any volume / claim events until both PV and claim caches are fully loaded.
This commit is contained in:
@@ -112,6 +112,10 @@ func (ctrl *PersistentVolumeController) initializeController(syncPeriod time.Dur
|
|||||||
// addVolume is callback from framework.Controller watching PersistentVolume
|
// addVolume is callback from framework.Controller watching PersistentVolume
|
||||||
// events.
|
// events.
|
||||||
func (ctrl *PersistentVolumeController) addVolume(obj interface{}) {
|
func (ctrl *PersistentVolumeController) addVolume(obj interface{}) {
|
||||||
|
if !ctrl.isFullySynced() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
pv, ok := obj.(*api.PersistentVolume)
|
pv, ok := obj.(*api.PersistentVolume)
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Errorf("expected PersistentVolume but handler received %+v", obj)
|
glog.Errorf("expected PersistentVolume but handler received %+v", obj)
|
||||||
@@ -125,6 +129,10 @@ func (ctrl *PersistentVolumeController) addVolume(obj interface{}) {
|
|||||||
// updateVolume is callback from framework.Controller watching PersistentVolume
|
// updateVolume is callback from framework.Controller watching PersistentVolume
|
||||||
// events.
|
// events.
|
||||||
func (ctrl *PersistentVolumeController) updateVolume(oldObj, newObj interface{}) {
|
func (ctrl *PersistentVolumeController) updateVolume(oldObj, newObj interface{}) {
|
||||||
|
if !ctrl.isFullySynced() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
newVolume, ok := newObj.(*api.PersistentVolume)
|
newVolume, ok := newObj.(*api.PersistentVolume)
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Errorf("Expected PersistentVolume but handler received %+v", newObj)
|
glog.Errorf("Expected PersistentVolume but handler received %+v", newObj)
|
||||||
@@ -144,6 +152,10 @@ func (ctrl *PersistentVolumeController) deleteVolume(obj interface{}) {
|
|||||||
// addClaim is callback from framework.Controller watching PersistentVolumeClaim
|
// addClaim is callback from framework.Controller watching PersistentVolumeClaim
|
||||||
// events.
|
// events.
|
||||||
func (ctrl *PersistentVolumeController) addClaim(obj interface{}) {
|
func (ctrl *PersistentVolumeController) addClaim(obj interface{}) {
|
||||||
|
if !ctrl.isFullySynced() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
claim, ok := obj.(*api.PersistentVolumeClaim)
|
claim, ok := obj.(*api.PersistentVolumeClaim)
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Errorf("Expected PersistentVolumeClaim but addClaim received %+v", obj)
|
glog.Errorf("Expected PersistentVolumeClaim but addClaim received %+v", obj)
|
||||||
@@ -157,6 +169,10 @@ func (ctrl *PersistentVolumeController) addClaim(obj interface{}) {
|
|||||||
// updateClaim is callback from framework.Controller watching PersistentVolumeClaim
|
// updateClaim is callback from framework.Controller watching PersistentVolumeClaim
|
||||||
// events.
|
// events.
|
||||||
func (ctrl *PersistentVolumeController) updateClaim(oldObj, newObj interface{}) {
|
func (ctrl *PersistentVolumeController) updateClaim(oldObj, newObj interface{}) {
|
||||||
|
if !ctrl.isFullySynced() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
newClaim, ok := newObj.(*api.PersistentVolumeClaim)
|
newClaim, ok := newObj.(*api.PersistentVolumeClaim)
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Errorf("Expected PersistentVolumeClaim but updateClaim received %+v", newObj)
|
glog.Errorf("Expected PersistentVolumeClaim but updateClaim received %+v", newObj)
|
||||||
@@ -170,6 +186,10 @@ func (ctrl *PersistentVolumeController) updateClaim(oldObj, newObj interface{})
|
|||||||
// deleteClaim is callback from framework.Controller watching PersistentVolumeClaim
|
// deleteClaim is callback from framework.Controller watching PersistentVolumeClaim
|
||||||
// events.
|
// events.
|
||||||
func (ctrl *PersistentVolumeController) deleteClaim(obj interface{}) {
|
func (ctrl *PersistentVolumeController) deleteClaim(obj interface{}) {
|
||||||
|
if !ctrl.isFullySynced() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var volume *api.PersistentVolume
|
var volume *api.PersistentVolume
|
||||||
var claim *api.PersistentVolumeClaim
|
var claim *api.PersistentVolumeClaim
|
||||||
var ok bool
|
var ok bool
|
||||||
@@ -242,3 +262,11 @@ func (ctrl *PersistentVolumeController) Stop() {
|
|||||||
close(ctrl.volumeControllerStopCh)
|
close(ctrl.volumeControllerStopCh)
|
||||||
close(ctrl.claimControllerStopCh)
|
close(ctrl.claimControllerStopCh)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isFullySynced returns true, if both volume and claim caches are fully loaded
|
||||||
|
// after startup.
|
||||||
|
// We do not want to process events with not fully loaded caches - e.g. we might
|
||||||
|
// recycle/delete PVs that don't have corresponding claim in the cache yet.
|
||||||
|
func (ctrl *PersistentVolumeController) isFullySynced() bool {
|
||||||
|
return ctrl.volumeController.HasSynced() && ctrl.claimController.HasSynced()
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user