diff --git a/atcoder-problems-backend/crawler/src/client.rs b/atcoder-problems-backend/crawler/src/client.rs index e29194b3..ac4b1511 100644 --- a/atcoder-problems-backend/crawler/src/client.rs +++ b/atcoder-problems-backend/crawler/src/client.rs @@ -125,6 +125,9 @@ impl CrawlerClient { ); let request = self.client.get(&url); let response = request.send().await?; + if response.status() == 404 { + return Err(CrawlerError::NotFound); + } if !response.status().is_success() { return Err(CrawlerError::HttpError(response.text().await?)); } diff --git a/atcoder-problems-backend/src/crawler_utils.rs b/atcoder-problems-backend/src/crawler_utils.rs index e137d91e..9c77ae0a 100644 --- a/atcoder-problems-backend/src/crawler_utils.rs +++ b/atcoder-problems-backend/src/crawler_utils.rs @@ -23,6 +23,14 @@ pub async fn fetch_submissions( Ok(submissions) => { return submissions; } + Err(CrawlerError::NotFound) => { + tracing::warn!( + "Submissions page not found for contest {} page {} (404), skipping", + contest_id, + page + ); + return vec![]; + } Err(e) => { retry_count += 1; tracing::warn!(