Skip to content

Commit 59ebf69

Browse files
authored
[#4813] Adjust the log information about scheduled tasks and limiting to improve product experience (#4814) (#4817) (#4847)
1 parent 94946d1 commit 59ebf69

File tree

7 files changed

+31
-5
lines changed

7 files changed

+31
-5
lines changed

clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ public QueryConfigurationsResponse queryConfigurations(QueryConfigurationsReques
127127
queryConfigurationsResponse.setChanged(false);
128128
addressManager.recordSuccessState(address);
129129
return queryConfigurationsResponse;
130+
} else if (httpResponse.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
131+
LOGGER.warn("rate limited, keep the local dimension [{}] configs unchanged.", dimensionsInfo);
132+
queryConfigurationsResponse.setChanged(false);
133+
addressManager.recordSuccessState(address);
134+
return queryConfigurationsResponse;
130135
} else if (httpResponse.getStatusCode() == HttpStatus.SC_BAD_REQUEST) {
131136
throw new OperationException("Bad request for query configurations.");
132137
} else {

clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ public void execute() {
8989
}
9090
startTask(new BackOffSleepTask(configCenterConfiguration.getRefreshIntervalInMillis(), new PollConfigurationTask(0)));
9191
} catch (Exception e) {
92-
LOGGER.error("get configurations from ConfigCenter failed, and will try again.", e);
92+
LOGGER.warn("get configurations from ConfigCenter failed, and will try again, cause message: {}. current "
93+
+ "fail does not affect the obtained historical configuration.", e.getCause().getMessage());
9394
startTask(new BackOffSleepTask(failCount + 1, new PollConfigurationTask(failCount + 1)));
9495
}
9596
}

clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,12 @@ public ConfigurationsResponse queryConfigurations(ConfigurationsRequest request,
111111
addressManager.recordSuccessState(address);
112112
return configurationsResponse;
113113
}
114+
if (httpResponse.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
115+
LOGGER.warn("rate limited, keep the local dimension [{}] configs unchanged.", request.getLabelsQuery());
116+
configurationsResponse.setChanged(false);
117+
addressManager.recordSuccessState(address);
118+
return configurationsResponse;
119+
}
114120
addressManager.recordFailState(address);
115121
throw new OperationException(
116122
"read response failed. status:" + httpResponse.getStatusCode() + "; message:" +

clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ public void execute() {
155155
startTask(new BackOffSleepTask(kieConfiguration.getRefreshIntervalInMillis(), new PollConfigurationTask(0, this.configurationsRequest)));
156156
}
157157
} catch (Exception e) {
158-
LOGGER.error("get configurations from KieConfigCenter failed, and will try again.", e);
158+
LOGGER.warn("get configurations from KieConfigCenter failed, and will try again, cause message: {}. current "
159+
+ "fail does not affect the obtained historical configuration.", e.getCause().getMessage());
159160
startTask(
160161
new BackOffSleepTask(failCount + 1, new PollConfigurationTask(failCount + 1, this.configurationsRequest)));
161162
}

clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,11 @@ public FindMicroserviceInstancesResponse findMicroserviceInstance(String consume
249249
result.setModified(false);
250250
return result;
251251
}
252+
if (response.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
253+
LOGGER.warn("rate limited, keep the local service {}#{} instance cache unchanged.", appId, serviceName);
254+
result.setModified(false);
255+
return result;
256+
}
252257
sendUnAuthorizedEvent(response);
253258
throw new OperationException(
254259
"get service instances list fails, statusCode = " + response.getStatusCode() + "; message = " + response

clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,14 @@ private List<SubscriptionKey> pullInstance(SubscriptionKey k, SubscriptionValue
186186
}
187187
}
188188
} catch (Exception e) {
189-
LOGGER.error("find service {}#{} instance failed.", k.appId, k.serviceName, e);
190189
if (!(e.getCause() instanceof IOException)) {
191190
// for IOException, do not remove cache, or when service center
192191
// not available, invocation between microservices will fail.
193192
failedKeys.add(k);
193+
LOGGER.error("find service {}#{} instance failed and remove local cache.", k.appId, k.serviceName, e);
194+
} else {
195+
LOGGER.warn("find service {}#{} instance failed, remaining local instances cache, cause message: {}",
196+
k.appId, k.serviceName, e.getMessage());
194197
}
195198
}
196199
return failedKeys;

clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ public void execute() {
277277
}
278278

279279
if (!serviceCenterClient.sendHeartBeat(microservice.getServiceId(), microserviceInstance.getInstanceId())) {
280-
LOGGER.error("send heart failed, and will try again.");
280+
LOGGER.warn("send heart failed, and will try again.");
281281
eventBus.post(new HeartBeatEvent(false, microservice, microserviceInstance));
282282
startTask(new BackOffSleepTask(failedCount + 1, new SendHeartBeatTask(failedCount + 1)));
283283
} else {
@@ -287,7 +287,12 @@ public void execute() {
287287
new BackOffSleepTask(Math.max(heartBeatInterval, heartBeatRequestTimeout), new SendHeartBeatTask(0)));
288288
}
289289
} catch (Exception e) {
290-
LOGGER.error("send heart failed, and will try again.", e);
290+
// If heartbeat failures three times, log error stack help troubleshooting. Others just log message as warn.
291+
if (failedCount == 2) {
292+
LOGGER.error("send heart failed, and will try again.", e);
293+
} else {
294+
LOGGER.warn("send heart failed, and will try again. message [{}]", e.getCause().getMessage());
295+
}
291296
eventBus.post(new HeartBeatEvent(false, microservice, microserviceInstance));
292297
startTask(new BackOffSleepTask(failedCount + 1, new SendHeartBeatTask(failedCount + 1)));
293298
}

0 commit comments

Comments
 (0)