This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new f48cdf4dc [#4813] Adjust the log information about scheduled tasks and
limiting to improve product experience (#4814)
f48cdf4dc is described below
commit f48cdf4dcb2467f577e0710b41175a31b8f05ba4
Author: Alex <[email protected]>
AuthorDate: Tue May 20 17:36:20 2025 +0800
[#4813] Adjust the log information about scheduled tasks and limiting to
improve product experience (#4814)
---
.../servicecomb/config/center/client/ConfigCenterClient.java | 5 +++++
.../servicecomb/config/center/client/ConfigCenterManager.java | 3 ++-
.../java/org/apache/servicecomb/config/kie/client/KieClient.java | 6 ++++++
.../apache/servicecomb/config/kie/client/KieConfigManager.java | 3 ++-
.../servicecomb/service/center/client/ServiceCenterClient.java | 5 +++++
.../service/center/client/ServiceCenterDiscovery.java | 5 ++++-
.../service/center/client/ServiceCenterRegistration.java | 9 +++++++--
7 files changed, 31 insertions(+), 5 deletions(-)
diff --git
a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
index 00889cbf6..25aedec66 100644
---
a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
+++
b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
@@ -116,6 +116,11 @@ public class ConfigCenterClient implements
ConfigCenterOperation {
queryConfigurationsResponse.setChanged(false);
addressManager.recordSuccessState(address);
return queryConfigurationsResponse;
+ } else if (httpResponse.getStatusCode() ==
HttpStatus.SC_TOO_MANY_REQUESTS) {
+ LOGGER.warn("rate limited, keep the local dimension [{}] configs
unchanged.", dimensionsInfo);
+ queryConfigurationsResponse.setChanged(false);
+ addressManager.recordSuccessState(address);
+ return queryConfigurationsResponse;
} else if (httpResponse.getStatusCode() == HttpStatus.SC_BAD_REQUEST) {
throw new OperationException("Bad request for query configurations.");
} else {
diff --git
a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
index 6dadab7b1..7bfc43b4e 100644
---
a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
+++
b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterManager.java
@@ -91,7 +91,8 @@ public class ConfigCenterManager extends AbstractTask {
startTask(
new
BackOffSleepTask(configCenterConfiguration.getRefreshIntervalInMillis(), new
PollConfigurationTask(0)));
} catch (Exception e) {
- LOGGER.error("get configurations from ConfigCenter failed, and will
try again.", e);
+ LOGGER.warn("get configurations from ConfigCenter failed, and will try
again, cause message: {}. current "
+ + "fail does not affect the obtained historical configuration.",
e.getCause().getMessage());
startTask(new BackOffSleepTask(failCount + 1, new
PollConfigurationTask(failCount + 1)));
}
}
diff --git
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
index 49f81989a..8379e046b 100644
---
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
+++
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
@@ -105,6 +105,12 @@ public class KieClient implements KieConfigOperation {
addressManager.recordSuccessState(address);
return configurationsResponse;
}
+ if (httpResponse.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
+ LOGGER.warn("rate limited, keep the local dimension [{}] configs
unchanged.", request.getLabelsQuery());
+ configurationsResponse.setChanged(false);
+ addressManager.recordSuccessState(address);
+ return configurationsResponse;
+ }
addressManager.recordFailState(address);
throw new OperationException(
"read response failed. status:" + httpResponse.getStatusCode() + ";
message:" +
diff --git
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
index c2222a6a1..ed2516135 100644
---
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
+++
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieConfigManager.java
@@ -156,7 +156,8 @@ public class KieConfigManager extends AbstractTask {
new PollConfigurationTask(0, this.configurationsRequest)));
}
} catch (Exception e) {
- LOGGER.error("get configurations from KieConfigCenter failed, and will
try again.", e);
+ LOGGER.warn("get configurations from KieConfigCenter failed, and will
try again, cause message: {}. current "
+ + "fail does not affect the obtained historical configuration.",
e.getCause().getMessage());
startTask(
new BackOffSleepTask(failCount + 1, new
PollConfigurationTask(failCount + 1, this.configurationsRequest)));
}
diff --git
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
index 7d414fb23..1e6f41561 100755
---
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
+++
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
@@ -250,6 +250,11 @@ public class ServiceCenterClient implements
ServiceCenterOperation {
result.setModified(false);
return result;
}
+ if (response.getStatusCode() == HttpStatus.SC_TOO_MANY_REQUESTS) {
+ LOGGER.warn("rate limited, keep the local service {}#{} instance cache
unchanged.", appId, serviceName);
+ result.setModified(false);
+ return result;
+ }
sendUnAuthorizedEvent(response);
throw new OperationException(
"get service instances list fails, statusCode = " +
response.getStatusCode() + "; message = " + response
diff --git
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
index 808c13daf..6e10ba358 100644
---
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
+++
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
@@ -186,11 +186,14 @@ public class ServiceCenterDiscovery extends AbstractTask {
}
}
} catch (Exception e) {
- LOGGER.warn("find service {}#{} instance failed.", k.appId,
k.serviceName, e);
if (!(e.getCause() instanceof IOException)) {
// for IOException, do not remove cache, or when service center
// not available, invocation between microservices will fail.
failedKeys.add(k);
+ LOGGER.error("find service {}#{} instance failed and remove local
cache.", k.appId, k.serviceName, e);
+ } else {
+ LOGGER.warn("find service {}#{} instance failed, remaining local
instances cache, cause message: {}",
+ k.appId, k.serviceName, e.getMessage());
}
}
return failedKeys;
diff --git
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
index 07d833758..7f453834b 100644
---
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
+++
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRegistration.java
@@ -287,7 +287,7 @@ public class ServiceCenterRegistration extends AbstractTask
{
}
if (!serviceCenterClient.sendHeartBeat(microservice.getServiceId(),
microserviceInstance.getInstanceId())) {
- LOGGER.error("send heart failed, and will try again.");
+ LOGGER.warn("send heart failed, and will try again.");
eventBus.post(new HeartBeatEvent(false, microservice,
microserviceInstance));
startTask(new BackOffSleepTask(failedCount + 1, new
SendHeartBeatTask(failedCount + 1)));
} else {
@@ -297,7 +297,12 @@ public class ServiceCenterRegistration extends
AbstractTask {
new BackOffSleepTask(Math.max(heartBeatInterval,
heartBeatRequestTimeout), new SendHeartBeatTask(0)));
}
} catch (Exception e) {
- LOGGER.error("send heart failed, and will try again.", e);
+ // If heartbeat failures three times, log error stack help
troubleshooting. Others just log message as warn.
+ if (failedCount == 2) {
+ LOGGER.error("send heart failed, and will try again.", e);
+ } else {
+ LOGGER.warn("send heart failed, and will try again. message [{}]",
e.getCause().getMessage());
+ }
eventBus.post(new HeartBeatEvent(false, microservice,
microserviceInstance));
startTask(new BackOffSleepTask(failedCount + 1, new
SendHeartBeatTask(failedCount + 1)));
}