From 07900f126569df51e92fec1e2cd5e410f996b116 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 3 Jan 2026 21:30:38 +0000 Subject: [PATCH] Extract retry logging into helper method and fix formatting - Add LogRetryAttempt() helper method for consistent logging - Fix formatting in ShouldRetryRequest() for better readability - Use helper method in both GetRecentTracksRequestFinished and GetTopTracksRequestFinished - Eliminates duplicate logging code Co-authored-by: jonaski <10343810+jonaski@users.noreply.github.com> --- src/scrobbler/lastfmimport.cpp | 14 ++++++++++---- src/scrobbler/lastfmimport.h | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/scrobbler/lastfmimport.cpp b/src/scrobbler/lastfmimport.cpp index 10a562489..cca7e8eb9 100644 --- a/src/scrobbler/lastfmimport.cpp +++ b/src/scrobbler/lastfmimport.cpp @@ -259,7 +259,7 @@ void LastFMImport::GetRecentTracksRequestFinished(QNetworkReply *reply, GetRecen if (!json_object_result.success()) { if (ShouldRetryRequest(json_object_result) && request.retry_count < kMaxRetries) { const int delay_ms = CalculateBackoffDelay(request.retry_count); - qLog(Warning) << "Last.fm request failed with status" << json_object_result.http_status_code << ", retrying in" << delay_ms << "ms (attempt" << (request.retry_count + 1) << "of" << kMaxRetries << ")"; + LogRetryAttempt(json_object_result.http_status_code, request.retry_count, delay_ms); QTimer::singleShot(delay_ms, this, [this, request]() { GetRecentTracksRequest retry_request(request.page, request.retry_count + 1); SendGetRecentTracksRequest(retry_request); @@ -426,7 +426,7 @@ void LastFMImport::GetTopTracksRequestFinished(QNetworkReply *reply, GetTopTrack if (!json_object_result.success()) { if (ShouldRetryRequest(json_object_result) && request.retry_count < kMaxRetries) { const int delay_ms = CalculateBackoffDelay(request.retry_count); - qLog(Warning) << "Last.fm request failed with status" << json_object_result.http_status_code << ", retrying in" << delay_ms << "ms (attempt" << (request.retry_count + 1) << "of" << kMaxRetries << ")"; + LogRetryAttempt(json_object_result.http_status_code, request.retry_count, delay_ms); QTimer::singleShot(delay_ms, this, [this, request]() { GetTopTracksRequest retry_request(request.page, request.retry_count + 1); SendGetTopTracksRequest(retry_request); @@ -549,11 +549,17 @@ void LastFMImport::GetTopTracksRequestFinished(QNetworkReply *reply, GetTopTrack } bool LastFMImport::ShouldRetryRequest(const JsonObjectResult &result) const { - return result.http_status_code == kRetryHttpStatusCode1 || - result.http_status_code == kRetryHttpStatusCode2 || + return result.http_status_code == kRetryHttpStatusCode1 || + result.http_status_code == kRetryHttpStatusCode2 || result.network_error == QNetworkReply::TemporaryNetworkFailureError; } +void LastFMImport::LogRetryAttempt(const int http_status_code, const int retry_count, const int delay_ms) const { + qLog(Warning) << "Last.fm request failed with status" << http_status_code + << ", retrying in" << delay_ms << "ms (attempt" + << (retry_count + 1) << "of" << kMaxRetries << ")"; +} + int LastFMImport::CalculateBackoffDelay(const int retry_count) const { const int safe_shift = std::min(retry_count, kMaxBackoffShift); return kInitialBackoffMs * (1 << safe_shift); diff --git a/src/scrobbler/lastfmimport.h b/src/scrobbler/lastfmimport.h index bf3c5c074..15a6c6071 100644 --- a/src/scrobbler/lastfmimport.h +++ b/src/scrobbler/lastfmimport.h @@ -82,6 +82,7 @@ class LastFMImport : public JsonBaseRequest { bool ShouldRetryRequest(const JsonObjectResult &result) const; int CalculateBackoffDelay(const int retry_count) const; + void LogRetryAttempt(const int http_status_code, const int retry_count, const int delay_ms) const; void Error(const QString &error, const QVariant &debug = QVariant()) override;