func checkSidecarContainerErr()

in pkg/csi_driver/utils.go [429:455]


func checkSidecarContainerErr(isInitContainer bool, pod *corev1.Pod) (codes.Code, error) {
	code := codes.Internal
	cs, err := getSidecarContainerStatus(isInitContainer, pod)
	if err != nil {
		return code, err
	}

	var reason string
	var exitCode int32
	if cs.RestartCount > 0 && cs.LastTerminationState.Terminated != nil {
		reason = cs.LastTerminationState.Terminated.Reason
		exitCode = cs.LastTerminationState.Terminated.ExitCode
	} else if cs.State.Terminated != nil {
		reason = cs.State.Terminated.Reason
		exitCode = cs.State.Terminated.ExitCode
	}

	if exitCode != 0 {
		if reason == "OOMKilled" || exitCode == 137 {
			code = codes.ResourceExhausted
		}

		return code, fmt.Errorf("the sidecar container terminated due to %v, exit code: %v", reason, exitCode)
	}

	return codes.OK, nil
}