You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2023/02/21 07:22:56 UTC
[servicecomb-java-chassis] branch 2.8.x updated: [SCB-2773]Change mutil dicovery registry instance merge policy (#3650)
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 5fc05610e [SCB-2773]Change mutil dicovery registry instance merge policy (#3650)
5fc05610e is described below
commit 5fc05610ebdb3ce7f2eabefe6b08044fc8c3bcac
Author: liubao68 <bi...@qq.com>
AuthorDate: Tue Feb 21 14:46:45 2023 +0800
[SCB-2773]Change mutil dicovery registry instance merge policy (#3650)
---
.../org/apache/servicecomb/registry/DiscoveryManager.java | 3 ++-
.../java/org/apache/servicecomb/registry/api/Discovery.java | 5 -----
.../registry/api/registry/MicroserviceInstances.java | 11 ++++-------
.../registry/lightweight/AbstractLightweightDiscovery.java | 11 ++++++++---
.../org/apache/servicecomb/localregistry/LocalDiscovery.java | 5 ++---
.../apache/servicecomb/localregistry/LocalRegistryStore.java | 3 +--
.../apache/servicecomb/schemadiscovery/SchemaDiscovery.java | 3 +--
.../servicecomb/serviceregistry/ServiceCenterDiscovery.java | 3 +--
8 files changed, 19 insertions(+), 25 deletions(-)
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/DiscoveryManager.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/DiscoveryManager.java
index 1afc569df..df8713c74 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/DiscoveryManager.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/DiscoveryManager.java
@@ -73,9 +73,10 @@ public class DiscoveryManager {
// default values not suitable for aggregate, reset.
result.setNeedRefresh(false);
result.setMicroserviceNotExist(true);
+ result.setRevision(revision);
discoveryList
.forEach(discovery -> {
- MicroserviceInstances instances = discovery.findServiceInstances(appId, serviceName, versionRule, revision);
+ MicroserviceInstances instances = discovery.findServiceInstances(appId, serviceName, versionRule);
result.mergeMicroserviceInstances(instances);
});
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/Discovery.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/Discovery.java
index 593fa4396..cf7029eeb 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/Discovery.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/Discovery.java
@@ -70,11 +70,6 @@ public interface Discovery extends SPIEnabled, SPIOrder, LifeCycle {
* @return all instances match the criteria.
*/
default MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
- return findServiceInstances(appId, serviceName, versionRule, null);
- }
-
- default MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule,
- String revision) {
return null;
}
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java
index 1a9e0fdff..329826289 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java
@@ -65,16 +65,13 @@ public class MicroserviceInstances {
public void mergeMicroserviceInstances(MicroserviceInstances other) {
mergeNeedRefresh(other.needRefresh);
mergeMicroserviceNotExist(other.microserviceNotExist);
- mergeRevision(other.revision);
+ mergeRevision(other);
mergeInstanceResponse(other.getInstancesResponse());
}
- private void mergeRevision(String revision) {
- if (revision == null) {
- return;
- }
- if (this.revision == null || this.revision.compareTo(revision) < 0) {
- this.revision = revision;
+ private void mergeRevision(MicroserviceInstances other) {
+ if (!other.isMicroserviceNotExist() && other.needRefresh) {
+ this.revision = other.getRevision();
}
}
diff --git a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java
index 11cf2c8da..6ba3b15f8 100644
--- a/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java
+++ b/service-registry/registry-lightweight/src/main/java/org/apache/servicecomb/registry/lightweight/AbstractLightweightDiscovery.java
@@ -45,6 +45,8 @@ public abstract class AbstractLightweightDiscovery implements Discovery, Initial
protected AppManager appManager;
+ protected String revision;
+
@Autowired
public AbstractLightweightDiscovery setEventBus(EventBus eventBus) {
this.eventBus = eventBus;
@@ -120,8 +122,11 @@ public abstract class AbstractLightweightDiscovery implements Discovery, Initial
// ignore versionRule, instances only filter by consumer logic
@Override
- public MicroserviceInstances findServiceInstances(String appId, String serviceName, String uselessVersionRule,
- String revision) {
- return store.findServiceInstances(appId, serviceName, revision);
+ public MicroserviceInstances findServiceInstances(String appId, String serviceName, String uselessVersionRule) {
+ MicroserviceInstances microserviceInstances = store.findServiceInstances(appId, serviceName, this.revision);
+ if (!microserviceInstances.isMicroserviceNotExist() && microserviceInstances.isNeedRefresh()) {
+ this.revision = microserviceInstances.getRevision();
+ }
+ return microserviceInstances;
}
}
diff --git a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalDiscovery.java b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalDiscovery.java
index 56c439320..9c6aafac0 100644
--- a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalDiscovery.java
+++ b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalDiscovery.java
@@ -73,9 +73,8 @@ public class LocalDiscovery implements Discovery {
}
@Override
- public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule,
- String revision) {
- return localDiscoveryStore.findServiceInstances(appId, serviceName, versionRule, revision);
+ public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
+ return localDiscoveryStore.findServiceInstances(appId, serviceName, versionRule);
}
@Override
diff --git a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java
index db5ce5d23..3526cd0fe 100644
--- a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java
+++ b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java
@@ -208,8 +208,7 @@ public class LocalRegistryStore {
}
// local registry do not care about version and revision
- public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule,
- String revision) {
+ public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
FindInstancesResponse findInstancesResponse = new FindInstancesResponse();
List<MicroserviceInstance> instances = new ArrayList<>();
diff --git a/service-registry/registry-schema-discovery/src/main/java/org/apache/servicecomb/schemadiscovery/SchemaDiscovery.java b/service-registry/registry-schema-discovery/src/main/java/org/apache/servicecomb/schemadiscovery/SchemaDiscovery.java
index 283bc6050..0fddfb4a4 100644
--- a/service-registry/registry-schema-discovery/src/main/java/org/apache/servicecomb/schemadiscovery/SchemaDiscovery.java
+++ b/service-registry/registry-schema-discovery/src/main/java/org/apache/servicecomb/schemadiscovery/SchemaDiscovery.java
@@ -103,8 +103,7 @@ public class SchemaDiscovery implements Discovery {
}
@Override
- public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule,
- String revision) {
+ public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
microserviceInstances.setMicroserviceNotExist(true);
return microserviceInstances;
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java
index af6caacee..a24fe14e4 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java
@@ -74,8 +74,7 @@ public class ServiceCenterDiscovery implements Discovery {
}
@Override
- public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule,
- String revision) {
+ public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
return RegistryUtils.findServiceInstances(appId,
serviceName,
versionRule);