|
|
@@ -32,8 +32,13 @@ public class AdxClient {
|
|
|
private final AuctionPriceEncoder priceEncoder;
|
|
|
private final ObjectMapper objectMapper;
|
|
|
private final int trackingMaxRedirects;
|
|
|
+ private final int trackingMax500Retries;
|
|
|
|
|
|
- public AdxClient(String endpoint, AuctionPriceEncoder priceEncoder, ObjectMapper objectMapper, int trackingMaxRedirects) {
|
|
|
+ public AdxClient(String endpoint,
|
|
|
+ AuctionPriceEncoder priceEncoder,
|
|
|
+ ObjectMapper objectMapper,
|
|
|
+ int trackingMaxRedirects,
|
|
|
+ int trackingMax500Retries) {
|
|
|
this.endpoint = endpoint;
|
|
|
this.priceEncoder = priceEncoder;
|
|
|
this.httpClient = HttpClient.newBuilder()
|
|
|
@@ -41,6 +46,7 @@ public class AdxClient {
|
|
|
.build();
|
|
|
this.objectMapper = objectMapper;
|
|
|
this.trackingMaxRedirects = Math.max(0, trackingMaxRedirects);
|
|
|
+ this.trackingMax500Retries = Math.max(0, trackingMax500Retries);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -129,6 +135,7 @@ public class AdxClient {
|
|
|
throws IOException, InterruptedException {
|
|
|
String currentUrl = originalUrl;
|
|
|
int redirectCount = 0;
|
|
|
+ int status500RetryCount = 0;
|
|
|
while (true) {
|
|
|
HttpRequest req = HttpRequest.newBuilder()
|
|
|
.uri(URI.create(currentUrl))
|
|
|
@@ -144,6 +151,21 @@ public class AdxClient {
|
|
|
}
|
|
|
return new TrackingResult(originalUrl, status, true);
|
|
|
}
|
|
|
+ if (status == 500) {
|
|
|
+ if (status500RetryCount >= trackingMax500Retries) {
|
|
|
+ log.warn("[百度监测][500重试失败] originalUrl={} currentUrl={} status={} retries={} maxRetries={} redirects={} reason=retry_limit_exceeded",
|
|
|
+ summarizeUrl(originalUrl), summarizeUrl(currentUrl), status,
|
|
|
+ status500RetryCount, trackingMax500Retries, redirectCount);
|
|
|
+ return new TrackingResult(originalUrl, status, false);
|
|
|
+ }
|
|
|
+ status500RetryCount++;
|
|
|
+ log.warn("[百度监测][500重试] originalUrl={} currentUrl={} status={} retry={}/{} redirects={} action=retry_original_url",
|
|
|
+ summarizeUrl(originalUrl), summarizeUrl(currentUrl), status,
|
|
|
+ status500RetryCount, trackingMax500Retries, redirectCount);
|
|
|
+ currentUrl = originalUrl;
|
|
|
+ redirectCount = 0;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (status != 302) {
|
|
|
if (redirectCount > 0) {
|
|
|
log.warn("[百度监测][302跟随失败] originalUrl={} finalUrl={} status={} redirects={} reason=non_302_terminal_status",
|