Skip to content

Commit d28401b

Browse files
committed
5xx errors should retry
1 parent 8cd2491 commit d28401b

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/submitter.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,20 @@ fn process_pending_solution(client: &Client, api_url: &str, file_path: &Path, da
8080
continue;
8181
},
8282
Err(e) => {
83-
// Non-recoverable API Error (Validation, Already Solved, Challenge Expired, etc.)
84-
eprintln!("❌ Non-recoverable API Submission Error. Deleting from queue. Details: {}", e);
85-
non_recoverable_error = true;
86-
break;
83+
// Determine if this is a recoverable 5xx error or a non-recoverable 4xx validation error.
84+
// We check for 50x or 51x (to be safe) status codes, which indicate server-side failure.
85+
let is_5xx_server_error = e.contains("(Status 50") || e.contains("(Status 51");
86+
87+
if is_5xx_server_error {
88+
eprintln!("⚠️ Solution submission failed (Server Error, possibly transient): {}. Retrying with backoff...", e);
89+
backoff.sleep();
90+
continue;
91+
} else {
92+
// Treat 4xx errors (API Validation, Already Solved, Challenge Expired, etc.) as non-recoverable.
93+
eprintln!("❌ Non-recoverable API Submission Error. Deleting from queue. Details: {}", e);
94+
non_recoverable_error = true;
95+
break;
96+
}
8797
}
8898
}
8999
}

0 commit comments

Comments
 (0)