Skip to content

Commit e607ccf

Browse files
authored
[#4682] Support framework information can be updated when service information is updated (#4684)
1 parent 95f63c0 commit e607ccf

File tree

11 files changed

+58
-26
lines changed

11 files changed

+58
-26
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.servicecomb.service.center.client.model.CreateSchemaRequest;
4040
import org.apache.servicecomb.service.center.client.model.ErrorMessage;
4141
import org.apache.servicecomb.service.center.client.model.FindMicroserviceInstancesResponse;
42+
import org.apache.servicecomb.service.center.client.model.Framework;
4243
import org.apache.servicecomb.service.center.client.model.GetSchemaListResponse;
4344
import org.apache.servicecomb.service.center.client.model.GetSchemaResponse;
4445
import org.apache.servicecomb.service.center.client.model.HeartbeatsRequest;
@@ -534,10 +535,11 @@ public RbacTokenResponse queryToken(RbacTokenRequest request) {
534535
}
535536

536537
@Override
537-
public boolean updateMicroserviceProperties(String serviceId, Map<String, String> serviceProperties) {
538+
public boolean updateMicroserviceProperties(String serviceId, Map<String, String> serviceProperties, Framework framework) {
538539
try {
539540
UpdatePropertiesRequest request = new UpdatePropertiesRequest();
540541
request.setProperties(serviceProperties);
542+
request.setFramework(framework);
541543
HttpResponse response = httpClient.putHttpRequest(
542544
"/registry/microservices/" + serviceId + "/properties", null, HttpUtils.serialize(request));
543545
if (response.getStatusCode() == HttpStatus.SC_OK) {

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.servicecomb.service.center.client.exception.OperationException;
2424
import org.apache.servicecomb.service.center.client.model.CreateSchemaRequest;
2525
import org.apache.servicecomb.service.center.client.model.FindMicroserviceInstancesResponse;
26+
import org.apache.servicecomb.service.center.client.model.Framework;
2627
import org.apache.servicecomb.service.center.client.model.HeartbeatsRequest;
2728
import org.apache.servicecomb.service.center.client.model.Microservice;
2829
import org.apache.servicecomb.service.center.client.model.MicroserviceInstance;
@@ -192,7 +193,8 @@ boolean updateMicroserviceInstanceStatus(String serviceId, String instanceId,
192193
* @return if update is successful
193194
* @throws OperationException If some problems happened to contact service center or non http 200 returned.
194195
*/
195-
boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties);
196+
boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties,
197+
Framework framework);
196198

197199
/**
198200
* Check serviceCenter isolation address available

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ public void execute() {
138138
microservice.setProperties(newMicroservice.getProperties());
139139
microservice.getProperties().putAll(propertiesTemp);
140140
if (serviceCenterClient.updateMicroserviceProperties(serviceResponse.getServiceId(),
141-
microservice.getProperties())) {
141+
microservice.getProperties(), microservice.getFramework())) {
142142
LOGGER.info(
143-
"microservice is already registered. Update microservice properties successfully. properties=[{}]",
144-
microservice.getProperties());
143+
"microservice is already registered. Update microservice properties successfully. properties=[{}], "
144+
+ "frameworkVersion [{}]", microservice.getProperties(), microservice.getFramework().getVersion());
145145
} else {
146-
LOGGER.error("microservice is already registered. Update microservice properties failed. properties=[{}]",
147-
microservice.getProperties());
146+
LOGGER.error("microservice is already registered. Update microservice properties failed. properties=[{}], "
147+
+ "frameworkVersion [{}]", microservice.getProperties(), microservice.getFramework().getVersion());
148148
}
149149

150150
microservice.setServiceId(serviceResponse.getServiceId());

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,21 @@
2222
public class UpdatePropertiesRequest {
2323
private Map<String, String> properties;
2424

25+
private Framework framework;
26+
2527
public Map<String, String> getProperties() {
2628
return properties;
2729
}
2830

2931
public void setProperties(Map<String, String> properties) {
3032
this.properties = properties;
3133
}
34+
35+
public Framework getFramework() {
36+
return framework;
37+
}
38+
39+
public void setFramework(Framework framework) {
40+
this.framework = framework;
41+
}
3242
}

clients/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterClientTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.List;
2424

2525
import org.apache.servicecomb.http.client.common.HttpResponse;
26+
import org.apache.servicecomb.service.center.client.model.Framework;
2627
import org.apache.servicecomb.service.center.client.model.HeartbeatsRequest;
2728
import org.apache.servicecomb.service.center.client.model.InstancesRequest;
2829
import org.apache.servicecomb.service.center.client.model.Microservice;
@@ -508,7 +509,7 @@ public void testUpdateMicroserviceProperties() throws IOException {
508509

509510
ServiceCenterClient serviceCenterClient = new ServiceCenterClient(serviceCenterRawClient);
510511
boolean result = serviceCenterClient
511-
.updateMicroserviceProperties("111", new HashMap<String, String>());
512+
.updateMicroserviceProperties("111", new HashMap<String, String>(), new Framework());
512513

513514
Assertions.assertTrue(result);
514515
}

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/api/request/UpdatePropertiesRequest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,29 @@
1919

2020
import java.util.Map;
2121

22+
import org.apache.servicecomb.registry.api.registry.Framework;
23+
2224
/**
2325
* 更新微服务和实例properties的request
2426
*/
2527
public class UpdatePropertiesRequest {
2628
private Map<String, String> properties;
2729

30+
private Framework framework;
31+
2832
public Map<String, String> getProperties() {
2933
return properties;
3034
}
3135

3236
public void setProperties(Map<String, String> properties) {
3337
this.properties = properties;
3438
}
39+
40+
public Framework getFramework() {
41+
return framework;
42+
}
43+
44+
public void setFramework(Framework framework) {
45+
this.framework = framework;
46+
}
3547
}

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
2424
import org.apache.servicecomb.registry.api.event.MicroserviceInstanceChangedEvent;
25+
import org.apache.servicecomb.registry.api.registry.Framework;
2526
import org.apache.servicecomb.registry.api.registry.Microservice;
2627
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
2728
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
@@ -69,7 +70,7 @@ public interface ServiceRegistryClient {
6970
/**
7071
* 更新微服务properties
7172
*/
72-
boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties);
73+
boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties, Framework framework);
7374

7475
/**
7576
*

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
3838
import org.apache.servicecomb.registry.api.event.MicroserviceInstanceChangedEvent;
3939
import org.apache.servicecomb.registry.api.registry.FindInstancesResponse;
40+
import org.apache.servicecomb.registry.api.registry.Framework;
4041
import org.apache.servicecomb.registry.api.registry.Microservice;
4142
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
4243
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
@@ -815,13 +816,15 @@ private void watchErrorHandler(Throwable e, String selfMicroserviceId,
815816
}
816817

817818
@Override
818-
public boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties) {
819+
public boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties,
820+
Framework framework) {
819821
Holder<HttpClientResponse> holder = new Holder<>();
820822
IpPort ipPort = ipPortManager.getAvailableAddress();
821823

822824
try {
823825
UpdatePropertiesRequest request = new UpdatePropertiesRequest();
824826
request.setProperties(serviceProperties);
827+
request.setFramework(framework);
825828
byte[] body = JsonUtils.writeValueAsBytes(request);
826829

827830
if (LOGGER.isDebugEnabled()) {

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public MicroserviceCache findMicroserviceCache(MicroserviceCacheKey microservice
201201
@Override
202202
public boolean updateMicroserviceProperties(Map<String, String> properties) {
203203
boolean success = srClient.updateMicroserviceProperties(microservice.getServiceId(),
204-
properties);
204+
properties, microservice.getFramework());
205205
if (success) {
206206
microservice.setProperties(properties);
207207
}

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/task/MicroserviceRegisterTask.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,20 +90,19 @@ protected boolean doRegister() {
9090
// Need to update microservice properties if we have modified or added properties of microservices.
9191
Microservice microserviceTemp = new Microservice();
9292
EnvAdapterManager.INSTANCE.processMicroserviceWithAdapters(microserviceTemp);
93-
if (!microserviceTemp.getProperties().isEmpty()) {
94-
Map<String, String> propertiesTemp = microserviceTemp.getProperties();
95-
Microservice srClientMicroservice = srClient.getMicroservice(serviceId);
96-
if (srClientMicroservice != null) {
97-
microserviceTemp.setProperties(srClientMicroservice.getProperties());
98-
microserviceTemp.getProperties().putAll(propertiesTemp);
99-
}
100-
if (srClient.updateMicroserviceProperties(serviceId, microserviceTemp.getProperties())) {
101-
LOGGER.info("microservice is already registered. Update microservice properties successfully. properties=[{}]",
102-
microserviceTemp.getProperties());
103-
} else {
104-
LOGGER.error("microservice is already registered. Update microservice properties failed. properties=[{}]",
105-
microserviceTemp.getProperties());
106-
}
93+
Map<String, String> propertiesTemp = microserviceTemp.getProperties();
94+
Microservice srClientMicroservice = srClient.getMicroservice(serviceId);
95+
if (srClientMicroservice != null) {
96+
microserviceTemp.setProperties(srClientMicroservice.getProperties());
97+
microserviceTemp.getProperties().putAll(propertiesTemp);
98+
}
99+
if (srClient.updateMicroserviceProperties(serviceId, microserviceTemp.getProperties(),
100+
microservice.getFramework())) {
101+
LOGGER.info("microservice is already registered. Update microservice properties successfully. properties=[{}]",
102+
microserviceTemp.getProperties());
103+
} else {
104+
LOGGER.error("microservice is already registered. Update microservice properties failed. properties=[{}]",
105+
microserviceTemp.getProperties());
107106
}
108107
LOGGER.info(
109108
"Microservice exists in service center, no need to register. id=[{}] appId=[{}], name=[{}], version=[{}], env=[{}]",

0 commit comments

Comments
 (0)