Skip to content

Commit 51ed941

Browse files
author
Phillip Wittrock
authored
Merge pull request #74 from droot/fix-watch-controller-of
fixed infinite loop in watchControllerOf API
2 parents 37830e0 + be1a28b commit 51ed941

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

pkg/controller/eventhandlers/eventhandlers.go

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -127,29 +127,32 @@ func (m MapToController) Map(obj interface{}) string {
127127
o := object
128128
for len(m.Path) > 0 {
129129
// Get the owner reference
130-
if ownerRef := metav1.GetControllerOf(o); ownerRef != nil {
131-
// Resolve the owner object and check if the UID of the looked up object matches the reference.
132-
owner, err := m.Path[0](types.ReconcileKey{Name: ownerRef.Name, Namespace: o.GetNamespace()})
133-
if err != nil || owner == nil {
134-
glog.V(2).Infof("Could not lookup owner %v %v", owner, err)
135-
return ""
136-
}
137-
var ownerObject metav1.Object
138-
if ownerObject, ok = owner.(metav1.Object); !ok {
139-
glog.V(2).Infof("No ObjectMeta for owner %v %v", owner, err)
140-
return ""
141-
}
142-
if ownerObject.GetUID() != ownerRef.UID {
143-
return ""
144-
}
130+
ownerRef := metav1.GetControllerOf(o)
131+
if ownerRef == nil {
132+
glog.V(2).Infof("object %v does not have any owner reference", o)
133+
return ""
134+
}
135+
// Resolve the owner object and check if the UID of the looked up object matches the reference.
136+
owner, err := m.Path[0](types.ReconcileKey{Name: ownerRef.Name, Namespace: o.GetNamespace()})
137+
if err != nil || owner == nil {
138+
glog.V(2).Infof("Could not lookup owner %v %v", owner, err)
139+
return ""
140+
}
141+
var ownerObject metav1.Object
142+
if ownerObject, ok = owner.(metav1.Object); !ok {
143+
glog.V(2).Infof("No ObjectMeta for owner %v %v", owner, err)
144+
return ""
145+
}
146+
if ownerObject.GetUID() != ownerRef.UID {
147+
return ""
148+
}
145149

146-
// Pop the path element or return the value
147-
if len(m.Path) > 1 {
148-
o = ownerObject
149-
m.Path = m.Path[1:]
150-
} else {
151-
return object.GetNamespace() + "/" + ownerRef.Name
152-
}
150+
// Pop the path element or return the value
151+
if len(m.Path) > 1 {
152+
o = ownerObject
153+
m.Path = m.Path[1:]
154+
} else {
155+
return object.GetNamespace() + "/" + ownerRef.Name
153156
}
154157
}
155158
return ""

0 commit comments

Comments
 (0)