You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2020/09/10 04:34:27 UTC

[dubbo] branch 3.0 updated (b5bb147 -> dec1760)

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a change to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git.


    from b5bb147  add customized class path for javassist. (#6705)
     new d95aa7e  make sure dynamic configuration is included after globalConfiguration is cached.
     new 962e6f8  fix, add dynamic config at the first place
     new cbca885  fix service discovery address notification and migration bugs
     new dec1760  refactor publish-interface key

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../common/config/CompositeConfiguration.java      | 12 +++++++++
 .../apache/dubbo/common/config/Environment.java    |  6 +++++
 .../dubbo/common/constants/RegistryConstants.java  |  2 +-
 .../client/ServiceDiscoveryRegistryDirectory.java  |  3 +++
 .../listener/ServiceInstancesChangedListener.java  | 30 +++++++++++-----------
 .../DefaultMigrationAddressComparator.java         |  2 +-
 .../client/migration/MigrationInvoker.java         |  9 ++++---
 .../client/migration/MigrationRuleHandler.java     | 24 +++++++++--------
 .../java/org/apache/dubbo/registry/ZKTools.java    |  2 +-
 9 files changed, 59 insertions(+), 31 deletions(-)


[dubbo] 02/04: fix, add dynamic config at the first place

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit 962e6f8cb4cbe65f890a7d466b0ccc0068833542
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Sep 8 17:35:50 2020 +0800

    fix, add dynamic config at the first place
---
 .../src/main/java/org/apache/dubbo/common/config/Environment.java       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
index afc5df3..d036cba 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
@@ -157,7 +157,7 @@ public class Environment extends LifecycleAdapter implements FrameworkExt {
             globalConfiguration.addConfiguration(propertiesConfiguration);
         } else {
             if (!globalConfiguration.isDynamicIncluded() && dynamicConfiguration != null) {
-                globalConfiguration.addConfiguration(dynamicConfiguration);
+                globalConfiguration.addConfigurationFirst(dynamicConfiguration);
                 globalConfiguration.setDynamicIncluded(true);
             }
         }


[dubbo] 04/04: refactor publish-interface key

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit dec1760304526aae7e187c68854745516b401cd4
Author: ken.lj <ke...@gmail.com>
AuthorDate: Wed Sep 9 16:34:18 2020 +0800

    refactor publish-interface key
---
 .../main/java/org/apache/dubbo/common/constants/RegistryConstants.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java
index 43c8bbc..3419deb 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/RegistryConstants.java
@@ -61,7 +61,7 @@ public interface RegistryConstants {
 
     String REGISTRY_PUBLISH_INTERFACE_KEY = "publish-interface";
 
-    String DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY = "dubbo.application.registry.publish-interface";
+    String DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY = "dubbo.application.publish-interface";
     /**
      * The parameter key of Dubbo Registry type
      *


[dubbo] 01/04: make sure dynamic configuration is included after globalConfiguration is cached.

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit d95aa7e455af2e10d94e7bc356fdc27a0a844b8b
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Sep 8 17:16:20 2020 +0800

    make sure dynamic configuration is included after globalConfiguration is cached.
---
 .../apache/dubbo/common/config/CompositeConfiguration.java   | 12 ++++++++++++
 .../java/org/apache/dubbo/common/config/Environment.java     |  6 ++++++
 2 files changed, 18 insertions(+)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
index eebf5a0..75a79a5 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/CompositeConfiguration.java
@@ -38,6 +38,9 @@ public class CompositeConfiguration implements Configuration {
      */
     private List<Configuration> configList = new LinkedList<Configuration>();
 
+    //FIXME, consider change configList to SortedMap to replace this boolean status.
+    private boolean dynamicIncluded;
+
     public CompositeConfiguration() {
         this(null, null);
     }
@@ -58,6 +61,15 @@ public class CompositeConfiguration implements Configuration {
         }
     }
 
+    public void setDynamicIncluded(boolean dynamicIncluded) {
+        this.dynamicIncluded = dynamicIncluded;
+    }
+
+    //FIXME, consider change configList to SortedMap to replace this boolean status.
+    public boolean isDynamicIncluded() {
+        return dynamicIncluded;
+    }
+
     public void addConfiguration(Configuration configuration) {
         if (configList.contains(configuration)) {
             return;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
index b5f24f7..afc5df3 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
@@ -148,12 +148,18 @@ public class Environment extends LifecycleAdapter implements FrameworkExt {
             globalConfiguration = new CompositeConfiguration();
             if (dynamicConfiguration != null) {
                 globalConfiguration.addConfiguration(dynamicConfiguration);
+                globalConfiguration.setDynamicIncluded(true);
             }
             globalConfiguration.addConfiguration(systemConfiguration);
             globalConfiguration.addConfiguration(environmentConfiguration);
             globalConfiguration.addConfiguration(appExternalConfiguration);
             globalConfiguration.addConfiguration(externalConfiguration);
             globalConfiguration.addConfiguration(propertiesConfiguration);
+        } else {
+            if (!globalConfiguration.isDynamicIncluded() && dynamicConfiguration != null) {
+                globalConfiguration.addConfiguration(dynamicConfiguration);
+                globalConfiguration.setDynamicIncluded(true);
+            }
         }
         return globalConfiguration;
     }


[dubbo] 03/04: fix service discovery address notification and migration bugs

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit cbca885fa8d1bf16e1e0d95ff6e89eafa274a69d
Author: ken.lj <ke...@gmail.com>
AuthorDate: Wed Sep 9 14:59:48 2020 +0800

    fix service discovery address notification and migration bugs
---
 .../client/ServiceDiscoveryRegistryDirectory.java  |  3 +++
 .../listener/ServiceInstancesChangedListener.java  | 30 +++++++++++-----------
 .../DefaultMigrationAddressComparator.java         |  2 +-
 .../client/migration/MigrationInvoker.java         |  9 ++++---
 .../client/migration/MigrationRuleHandler.java     | 24 +++++++++--------
 .../java/org/apache/dubbo/registry/ZKTools.java    |  2 +-
 6 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
index 306350a..df573d1 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
@@ -127,6 +127,9 @@ public class ServiceDiscoveryRegistryDirectory<T> extends DynamicDirectory<T> im
                 logger.warn("destroyUnusedInvokers error. ", e);
             }
         }
+
+        // notify invokers refreshed
+        this.invokersChanged();
     }
 
     /**
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java
index 7a833e4..c412547 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java
@@ -108,7 +108,7 @@ public class ServiceInstancesChangedListener implements ConditionalEventListener
                     metadata = getMetadataInfo(instance);
                     logger.info("MetadataInfo for instance " + instance.getAddress() + "?revision=" + revision + " is " + metadata);
                     if (metadata != null) {
-                        revisionToMetadata.put(revision, getMetadataInfo(instance));
+                        revisionToMetadata.put(revision, metadata);
                     } else {
 
                     }
@@ -123,23 +123,23 @@ public class ServiceInstancesChangedListener implements ConditionalEventListener
 //                    Set<String> set = localServiceToRevisions.computeIfAbsent(url.getServiceKey(), k -> new TreeSet<>());
 //                    set.add(revision);
 //                }
+            }
 
-                localServiceToRevisions.forEach((serviceKey, revisions) -> {
-                    List<URL> urls = revisionsToUrls.get(revisions);
-                    if (urls != null) {
-                        serviceUrls.put(serviceKey, urls);
-                    } else {
-                        urls = new ArrayList<>();
-                        for (String r : revisions) {
-                            for (ServiceInstance i : revisionToInstances.get(r)) {
-                                urls.add(i.toURL());
-                            }
+            localServiceToRevisions.forEach((serviceKey, revisions) -> {
+                List<URL> urls = revisionsToUrls.get(revisions);
+                if (urls != null) {
+                    serviceUrls.put(serviceKey, urls);
+                } else {
+                    urls = new ArrayList<>();
+                    for (String r : revisions) {
+                        for (ServiceInstance i : revisionToInstances.get(r)) {
+                            urls.add(i.toURL());
                         }
-                        revisionsToUrls.put(revisions, urls);
-                        serviceUrls.put(serviceKey, urls);
                     }
-                });
-            }
+                    revisionsToUrls.put(revisions, urls);
+                    serviceUrls.put(serviceKey, urls);
+                }
+            });
         }
 
         this.notifyAddressChanged();
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
index eace753..b13ac27 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
@@ -62,7 +62,7 @@ public class DefaultMigrationAddressComparator implements MigrationAddressCompar
             return false;
         }
 
-        if ((float) (newAddressSize / oldAddressSize) >= threshold) {
+        if (((float)newAddressSize / (float)oldAddressSize) >= threshold) {
             return true;
         }
         return false;
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
index c6ba259..e82d164 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
@@ -141,11 +141,11 @@ public class MigrationInvoker<T> implements MigrationClusterInvoker<T> {
 
     @Override
     public Result invoke(Invocation invocation) throws RpcException {
-        if (needRefresh(serviceDiscoveryInvoker)) {
+        if (!checkInvokerAvailable(serviceDiscoveryInvoker)) {
             return invoker.invoke(invocation);
         }
 
-        if (needRefresh(invoker)) {
+        if (!checkInvokerAvailable(invoker)) {
             return serviceDiscoveryInvoker.invoke(invocation);
         }
 
@@ -270,7 +270,10 @@ public class MigrationInvoker<T> implements MigrationClusterInvoker<T> {
     }
 
     private boolean needRefresh(ClusterInvoker<T> invoker) {
-        return invoker == null || invoker.isDestroyed() || !invoker.isAvailable();
+        return invoker == null || invoker.isDestroyed();
     }
 
+    public boolean checkInvokerAvailable(ClusterInvoker<T> invoker) {
+        return invoker != null && !invoker.isDestroyed() && invoker.isAvailable();
+    }
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java
index 556c701..3df53dc 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java
@@ -32,6 +32,7 @@ public class MigrationRuleHandler<T> {
     private static final String DUBBO_SERVICEDISCOVERY_MIGRATION = "dubbo.application.service-discovery.migration";
 
     private MigrationInvoker<T> migrationInvoker;
+    private MigrationStep currentStep;
 
     public MigrationRuleHandler(MigrationInvoker<T> invoker) {
         this.migrationInvoker = invoker;
@@ -51,16 +52,19 @@ public class MigrationRuleHandler<T> {
             step = rule.getStep();
         }
 
-        switch (step) {
-            case APPLICATION_FIRST:
-                migrationInvoker.migrateToServiceDiscoveryInvoker(false);
-                break;
-            case FORCE_APPLICATION:
-                migrationInvoker.migrateToServiceDiscoveryInvoker(true);
-                break;
-            case INTERFACE_FIRST:
-            default:
-                migrationInvoker.fallbackToInterfaceInvoker();
+        if (currentStep == null || currentStep != step) {
+            currentStep = step;
+            switch (step) {
+                case APPLICATION_FIRST:
+                    migrationInvoker.migrateToServiceDiscoveryInvoker(false);
+                    break;
+                case FORCE_APPLICATION:
+                    migrationInvoker.migrateToServiceDiscoveryInvoker(true);
+                    break;
+                case INTERFACE_FIRST:
+                default:
+                    migrationInvoker.fallbackToInterfaceInvoker();
+            }
         }
     }
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
index ac24765..86ff3a2 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/ZKTools.java
@@ -71,7 +71,7 @@ public class ZKTools {
     public static void testMigrationRule() {
         String serviceStr = "---\n" +
                 "key: demo-consumer\n" +
-                "step: APPLICATION_FIRST\n" +
+                "step: INTERFACE_FIRST\n" +
                 "...";
         try {
             String servicePath = "/dubbo/config/DUBBO_SERVICEDISCOVERY_MIGRATION/demo-consumer.migration";