This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch 2.8.x
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/2.8.x by this push:
new e607ccf58 [#4682] Support framework information can be updated when
service information is updated (#4684)
e607ccf58 is described below
commit e607ccf58aad6969352c689aec06dcf3cd2263cb
Author: Alex <[email protected]>
AuthorDate: Thu Jan 23 15:32:17 2025 +0800
[#4682] Support framework information can be updated when service
information is updated (#4684)
---
.../service/center/client/ServiceCenterClient.java | 4 +++-
.../center/client/ServiceCenterOperation.java | 4 +++-
.../center/client/ServiceCenterRegistration.java | 10 ++++----
.../client/model/UpdatePropertiesRequest.java | 10 ++++++++
.../center/client/ServiceCenterClientTest.java | 3 ++-
.../api/request/UpdatePropertiesRequest.java | 12 ++++++++++
.../client/ServiceRegistryClient.java | 3 ++-
.../client/http/ServiceRegistryClientImpl.java | 5 +++-
.../registry/AbstractServiceRegistry.java | 2 +-
.../task/MicroserviceRegisterTask.java | 27 +++++++++++-----------
.../client/LocalServiceRegistryClientImpl.java | 4 +++-
11 files changed, 58 insertions(+), 26 deletions(-)
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 e5425be66..4abc2411f 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
@@ -39,6 +39,7 @@ import
org.apache.servicecomb.service.center.client.model.CreateMicroserviceRequ
import org.apache.servicecomb.service.center.client.model.CreateSchemaRequest;
import org.apache.servicecomb.service.center.client.model.ErrorMessage;
import
org.apache.servicecomb.service.center.client.model.FindMicroserviceInstancesResponse;
+import org.apache.servicecomb.service.center.client.model.Framework;
import
org.apache.servicecomb.service.center.client.model.GetSchemaListResponse;
import org.apache.servicecomb.service.center.client.model.GetSchemaResponse;
import org.apache.servicecomb.service.center.client.model.HeartbeatsRequest;
@@ -534,10 +535,11 @@ public class ServiceCenterClient implements
ServiceCenterOperation {
}
@Override
- public boolean updateMicroserviceProperties(String serviceId, Map<String,
String> serviceProperties) {
+ public boolean updateMicroserviceProperties(String serviceId, Map<String,
String> serviceProperties, Framework framework) {
try {
UpdatePropertiesRequest request = new UpdatePropertiesRequest();
request.setProperties(serviceProperties);
+ request.setFramework(framework);
HttpResponse response = httpClient.putHttpRequest(
"/registry/microservices/" + serviceId + "/properties", null,
HttpUtils.serialize(request));
if (response.getStatusCode() == HttpStatus.SC_OK) {
diff --git
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterOperation.java
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterOperation.java
index f296e66fa..85671fee9 100644
---
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterOperation.java
+++
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterOperation.java
@@ -23,6 +23,7 @@ import java.util.Map;
import
org.apache.servicecomb.service.center.client.exception.OperationException;
import org.apache.servicecomb.service.center.client.model.CreateSchemaRequest;
import
org.apache.servicecomb.service.center.client.model.FindMicroserviceInstancesResponse;
+import org.apache.servicecomb.service.center.client.model.Framework;
import org.apache.servicecomb.service.center.client.model.HeartbeatsRequest;
import org.apache.servicecomb.service.center.client.model.Microservice;
import org.apache.servicecomb.service.center.client.model.MicroserviceInstance;
@@ -192,7 +193,8 @@ public interface ServiceCenterOperation {
* @return if update is successful
* @throws OperationException If some problems happened to contact service
center or non http 200 returned.
*/
- boolean updateMicroserviceProperties(String microserviceId, Map<String,
String> serviceProperties);
+ boolean updateMicroserviceProperties(String microserviceId, Map<String,
String> serviceProperties,
+ Framework framework);
/**
* Check serviceCenter isolation address available
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 332171943..02d76ebbb 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
@@ -138,13 +138,13 @@ public class ServiceCenterRegistration extends
AbstractTask {
microservice.setProperties(newMicroservice.getProperties());
microservice.getProperties().putAll(propertiesTemp);
if
(serviceCenterClient.updateMicroserviceProperties(serviceResponse.getServiceId(),
- microservice.getProperties())) {
+ microservice.getProperties(), microservice.getFramework())) {
LOGGER.info(
- "microservice is already registered. Update microservice
properties successfully. properties=[{}]",
- microservice.getProperties());
+ "microservice is already registered. Update microservice
properties successfully. properties=[{}], "
+ + "frameworkVersion [{}]", microservice.getProperties(),
microservice.getFramework().getVersion());
} else {
- LOGGER.error("microservice is already registered. Update
microservice properties failed. properties=[{}]",
- microservice.getProperties());
+ LOGGER.error("microservice is already registered. Update
microservice properties failed. properties=[{}], "
+ + "frameworkVersion [{}]", microservice.getProperties(),
microservice.getFramework().getVersion());
}
microservice.setServiceId(serviceResponse.getServiceId());
diff --git
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/UpdatePropertiesRequest.java
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/UpdatePropertiesRequest.java
index b10586208..d7d4b0939 100644
---
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/UpdatePropertiesRequest.java
+++
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/model/UpdatePropertiesRequest.java
@@ -22,6 +22,8 @@ import java.util.Map;
public class UpdatePropertiesRequest {
private Map<String, String> properties;
+ private Framework framework;
+
public Map<String, String> getProperties() {
return properties;
}
@@ -29,4 +31,12 @@ public class UpdatePropertiesRequest {
public void setProperties(Map<String, String> properties) {
this.properties = properties;
}
+
+ public Framework getFramework() {
+ return framework;
+ }
+
+ public void setFramework(Framework framework) {
+ this.framework = framework;
+ }
}
diff --git
a/clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java
b/clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java
index 12ad9cda3..1c39853bc 100755
---
a/clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java
+++
b/clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import org.apache.servicecomb.http.client.common.HttpResponse;
+import org.apache.servicecomb.service.center.client.model.Framework;
import org.apache.servicecomb.service.center.client.model.HeartbeatsRequest;
import org.apache.servicecomb.service.center.client.model.InstancesRequest;
import org.apache.servicecomb.service.center.client.model.Microservice;
@@ -508,7 +509,7 @@ public class ServiceCenterClientTest {
ServiceCenterClient serviceCenterClient = new
ServiceCenterClient(serviceCenterRawClient);
boolean result = serviceCenterClient
- .updateMicroserviceProperties("111", new HashMap<String,
String>());
+ .updateMicroserviceProperties("111", new HashMap<String,
String>(), new Framework());
Assertions.assertTrue(result);
}
diff --git
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/api/request/UpdatePropertiesRequest.java
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/api/request/UpdatePropertiesRequest.java
index 5e08a22a9..17809e33d 100644
---
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/api/request/UpdatePropertiesRequest.java
+++
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/api/request/UpdatePropertiesRequest.java
@@ -19,12 +19,16 @@ package org.apache.servicecomb.serviceregistry.api.request;
import java.util.Map;
+import org.apache.servicecomb.registry.api.registry.Framework;
+
/**
* 更新微服务和实例properties的request
*/
public class UpdatePropertiesRequest {
private Map<String, String> properties;
+ private Framework framework;
+
public Map<String, String> getProperties() {
return properties;
}
@@ -32,4 +36,12 @@ public class UpdatePropertiesRequest {
public void setProperties(Map<String, String> properties) {
this.properties = properties;
}
+
+ public Framework getFramework() {
+ return framework;
+ }
+
+ public void setFramework(Framework framework) {
+ this.framework = framework;
+ }
}
diff --git
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
index eca2f8d68..e1328d88a 100644
---
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
+++
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
import
org.apache.servicecomb.registry.api.event.MicroserviceInstanceChangedEvent;
+import org.apache.servicecomb.registry.api.registry.Framework;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
@@ -69,7 +70,7 @@ public interface ServiceRegistryClient {
/**
* 更新微服务properties
*/
- boolean updateMicroserviceProperties(String microserviceId, Map<String,
String> serviceProperties);
+ boolean updateMicroserviceProperties(String microserviceId, Map<String,
String> serviceProperties, Framework framework);
/**
*
diff --git
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java
index 9c5ed1d98..5227f7810 100644
---
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java
+++
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java
@@ -37,6 +37,7 @@ import
org.apache.servicecomb.foundation.common.utils.JsonUtils;
import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
import
org.apache.servicecomb.registry.api.event.MicroserviceInstanceChangedEvent;
import org.apache.servicecomb.registry.api.registry.FindInstancesResponse;
+import org.apache.servicecomb.registry.api.registry.Framework;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
@@ -815,13 +816,15 @@ public final class ServiceRegistryClientImpl implements
ServiceRegistryClient {
}
@Override
- public boolean updateMicroserviceProperties(String microserviceId,
Map<String, String> serviceProperties) {
+ public boolean updateMicroserviceProperties(String microserviceId,
Map<String, String> serviceProperties,
+ Framework framework) {
Holder<HttpClientResponse> holder = new Holder<>();
IpPort ipPort = ipPortManager.getAvailableAddress();
try {
UpdatePropertiesRequest request = new UpdatePropertiesRequest();
request.setProperties(serviceProperties);
+ request.setFramework(framework);
byte[] body = JsonUtils.writeValueAsBytes(request);
if (LOGGER.isDebugEnabled()) {
diff --git
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
index cf32dde8c..0a7f9d6f1 100644
---
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
+++
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
@@ -201,7 +201,7 @@ public abstract class AbstractServiceRegistry implements
ServiceRegistry {
@Override
public boolean updateMicroserviceProperties(Map<String, String> properties) {
boolean success =
srClient.updateMicroserviceProperties(microservice.getServiceId(),
- properties);
+ properties, microservice.getFramework());
if (success) {
microservice.setProperties(properties);
}
diff --git
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java
index 8193526bf..cb6d15d61 100644
---
a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java
+++
b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java
@@ -90,20 +90,19 @@ public class MicroserviceRegisterTask extends
AbstractRegisterTask {
// Need to update microservice properties if we have modified or added
properties of microservices.
Microservice microserviceTemp = new Microservice();
EnvAdapterManager.INSTANCE.processMicroserviceWithAdapters(microserviceTemp);
- if (!microserviceTemp.getProperties().isEmpty()) {
- Map<String, String> propertiesTemp = microserviceTemp.getProperties();
- Microservice srClientMicroservice =
srClient.getMicroservice(serviceId);
- if (srClientMicroservice != null) {
- microserviceTemp.setProperties(srClientMicroservice.getProperties());
- microserviceTemp.getProperties().putAll(propertiesTemp);
- }
- if (srClient.updateMicroserviceProperties(serviceId,
microserviceTemp.getProperties())) {
- LOGGER.info("microservice is already registered. Update microservice
properties successfully. properties=[{}]",
- microserviceTemp.getProperties());
- } else {
- LOGGER.error("microservice is already registered. Update
microservice properties failed. properties=[{}]",
- microserviceTemp.getProperties());
- }
+ Map<String, String> propertiesTemp = microserviceTemp.getProperties();
+ Microservice srClientMicroservice = srClient.getMicroservice(serviceId);
+ if (srClientMicroservice != null) {
+ microserviceTemp.setProperties(srClientMicroservice.getProperties());
+ microserviceTemp.getProperties().putAll(propertiesTemp);
+ }
+ if (srClient.updateMicroserviceProperties(serviceId,
microserviceTemp.getProperties(),
+ microservice.getFramework())) {
+ LOGGER.info("microservice is already registered. Update microservice
properties successfully. properties=[{}]",
+ microserviceTemp.getProperties());
+ } else {
+ LOGGER.error("microservice is already registered. Update microservice
properties failed. properties=[{}]",
+ microserviceTemp.getProperties());
}
LOGGER.info(
"Microservice exists in service center, no need to register. id=[{}]
appId=[{}], name=[{}], version=[{}], env=[{}]",
diff --git
a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
index 379a285e1..f0cdcf7ea 100644
---
a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
+++
b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
@@ -35,6 +35,7 @@ import org.apache.servicecomb.config.YAMLUtil;
import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
import
org.apache.servicecomb.registry.api.event.MicroserviceInstanceChangedEvent;
import org.apache.servicecomb.registry.api.registry.FindInstancesResponse;
+import org.apache.servicecomb.registry.api.registry.Framework;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
@@ -382,7 +383,8 @@ public class LocalServiceRegistryClientImpl implements
ServiceRegistryClient {
}
@Override
- public boolean updateMicroserviceProperties(String microserviceId,
Map<String, String> serviceProperties) {
+ public boolean updateMicroserviceProperties(String microserviceId,
Map<String, String> serviceProperties,
+ Framework framework) {
Microservice microservice = microserviceIdMap.get(microserviceId);
if (microservice == null) {
throw new IllegalArgumentException("Invalid serviceId, serviceId=" +
microserviceId);