Skip to content

Commit 536e9b5

Browse files
committed
Record error on job pod image pull failure
1 parent cdeb0a1 commit 536e9b5

File tree

1 file changed

+27
-2
lines changed
  • operator/src/main/java/oracle/kubernetes/operator/helpers

1 file changed

+27
-2
lines changed

operator/src/main/java/oracle/kubernetes/operator/helpers/JobHelper.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,12 @@ public Result onSuccess(Packet packet, KubernetesApiResponse<V1PodList> callResp
840840
if (jobPod == null) {
841841
return doContinueListOrNext(callResponse, packet, processIntrospectorPodLog(getNext()));
842842
} else if (hasImagePullError(jobPod) || initContainersHaveImagePullError(jobPod)) {
843-
return doNext(cleanUpAndReintrospect(getNext()), packet);
843+
844+
String reason = getImagePullError(jobPod);
845+
V1Job domainIntrospectorJob = packet.getValue(DOMAIN_INTROSPECTOR_JOB);
846+
return doNext(Step.chain(
847+
createIntrospectionFailureSteps(reason, domainIntrospectorJob),
848+
cleanUpAndReintrospect(getNext())), packet);
844849
} else if (isJobPodTimedOut(jobPod)) {
845850
// process job pod timed out same way as job timed out, which is to
846851
// terminate current fiber
@@ -903,13 +908,33 @@ private boolean initContainersHaveImagePullError(V1Pod pod) {
903908
.map(V1ContainerStateWaiting::getReason)
904909
.anyMatch(IntrospectionStatus::isImagePullError))
905910
.orElse(false);
906-
907911
}
908912

909913
private List<V1ContainerStatus> getInitContainerStatuses(V1Pod pod) {
910914
return Optional.ofNullable(pod.getStatus()).map(V1PodStatus::getInitContainerStatuses).orElse(null);
911915
}
912916

917+
private String getImagePullError(V1Pod pod) {
918+
String reason = getJobPodContainerWaitingReason(pod);
919+
if (!IntrospectionStatus.isImagePullError(reason)) {
920+
921+
List<V1ContainerStatus> statuses = getInitContainerStatuses(pod);
922+
if (statuses != null) {
923+
for (V1ContainerStatus status : statuses) {
924+
if (status != null && status.getState() != null) {
925+
V1ContainerStateWaiting waiting = status.getState().getWaiting();
926+
if (waiting != null && waiting.getReason() != null) {
927+
if (IntrospectionStatus.isImagePullError(waiting.getReason())) {
928+
reason = waiting.getReason();
929+
}
930+
}
931+
}
932+
}
933+
}
934+
}
935+
return reason;
936+
}
937+
913938
private void recordJobPod(Packet packet, V1Pod jobPod) {
914939
packet.put(ProcessingConstants.JOB_POD, jobPod);
915940
}

0 commit comments

Comments
 (0)