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);

Reply via email to