PR feedback

This commit is contained in:
Frostebite
2025-12-06 00:06:22 +00:00
parent c216e3bb41
commit f783857278
4 changed files with 72 additions and 18 deletions
Generated Vendored
+27 -3
View File
@@ -4020,9 +4020,33 @@ class KubernetesPods {
// If pod was killed and we have PreStopHook failure but no container status yet, wait a bit
// The container might have succeeded but status hasn't been updated yet
if (wasKilled && hasPreStopHookFailure && containerExitCode === undefined) {
cloud_runner_logger_1.default.log(`Pod ${podName} was killed with PreStopHook failure, but container status not yet available. This may be non-fatal if container succeeded.`);
// Still throw error for now, but with more context
// The task runner will retry and get the actual container status
cloud_runner_logger_1.default.log(`Pod ${podName} was killed with PreStopHook failure, but container status not yet available. Waiting for container status...`);
// Wait a bit for container status to become available (up to 30 seconds)
for (let i = 0; i < 6; i++) {
await new Promise((resolve) => setTimeout(resolve, 5000));
try {
const updatedPod = (await kubeClient.listNamespacedPod(namespace)).body.items.find((x) => podName === x.metadata?.name);
if (updatedPod?.status?.containerStatuses && updatedPod.status.containerStatuses.length > 0) {
const updatedContainerStatus = updatedPod.status.containerStatuses[0];
if (updatedContainerStatus.state?.terminated) {
const updatedExitCode = updatedContainerStatus.state.terminated.exitCode;
if (updatedExitCode === 0) {
cloud_runner_logger_1.default.logWarning(`Pod ${podName} container succeeded (exit code 0) after waiting. PreStopHook failure is non-fatal.`);
return false; // Pod is not running, but container succeeded
}
else {
cloud_runner_logger_1.default.log(`Pod ${podName} container failed with exit code ${updatedExitCode} after waiting.`);
errorDetails.push(`Container terminated after wait: exit code ${updatedExitCode}`);
break;
}
}
}
}
catch (waitError) {
cloud_runner_logger_1.default.log(`Error while waiting for container status: ${waitError}`);
}
}
cloud_runner_logger_1.default.log(`Container status still not available after waiting. Assuming failure due to PreStopHook issues.`);
}
const errorMessage = `K8s pod failed\n${errorDetails.join('\n')}`;
cloud_runner_logger_1.default.log(errorMessage);
Generated Vendored
+1 -1
View File
File diff suppressed because one or more lines are too long