Merge pull request #379 from robbiezhang/on-delete

[VK] Fix the potential runtime type casting error
This commit is contained in:
Brian Goff
2018-10-18 13:17:02 -07:00
committed by GitHub

View File

@@ -30,11 +30,10 @@ func (s *Server) onAddPod(ctx context.Context, obj interface{}) {
defer span.End()
logger := log.G(ctx).WithField("method", "onAddPod")
pod := obj.(*corev1.Pod)
if pod == nil {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %v", obj)})
logger.Errorf("obj is not a valid pod: %v", obj)
pod, ok := obj.(*corev1.Pod)
if !ok {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %T", obj)})
logger.Errorf("obj is not of a valid type: %T", obj)
return
}
@@ -53,11 +52,10 @@ func (s *Server) onUpdatePod(ctx context.Context, obj interface{}) {
defer span.End()
logger := log.G(ctx).WithField("method", "onUpdatePod")
pod := obj.(*corev1.Pod)
if pod == nil {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %v", obj)})
logger.Errorf("obj is not a valid pod: %v", obj)
pod, ok := obj.(*corev1.Pod)
if !ok {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %T", obj)})
logger.Errorf("obj is not of a valid type: %T", obj)
return
}
@@ -76,12 +74,20 @@ func (s *Server) onDeletePod(ctx context.Context, obj interface{}) {
defer span.End()
logger := log.G(ctx).WithField("method", "onDeletePod")
pod := obj.(*corev1.Pod)
pod, ok := obj.(*corev1.Pod)
if !ok {
delta, ok := obj.(cache.DeletedFinalStateUnknown)
if !ok {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %T", obj)})
logger.Errorf("obj is not of a valid type: %T", obj)
return
}
if pod == nil {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %v", obj)})
logger.Errorf("obj is not a valid pod: %v", obj)
return
if pod, ok = delta.Obj.(*corev1.Pod); !ok {
span.SetStatus(trace.Status{Code: trace.StatusCodeInvalidArgument, Message: fmt.Sprintf("Unexpected object from event: %T", obj)})
logger.Errorf("obj is not of a valid type: %T", obj)
return
}
}
addPodAttributes(span, pod)