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
The following commit(s) were added to refs/heads/3.0 by this push:
new 6de9634 metadata read & write
6de9634 is described below
commit 6de9634c53452d94fad8b243e57bda6ab1b9593a
Author: ken.lj <[email protected]>
AuthorDate: Mon Jun 15 13:41:07 2020 +0800
metadata read & write
---
.../dubbo/config/bootstrap/DubboBootstrap.java | 4 +-
.../metadata/DefaultMetadataParamsFilter.java | 3 +
.../org/apache/dubbo/metadata/MetadataInfo.java | 47 +++--
.../apache/dubbo/metadata/RevisionResolver.java | 2 +
.../dubbo/metadata/WritableMetadataService.java | 6 +-
.../org/apache/dubbo/metadata/DemoService.java | 30 ++-
.../apache/dubbo/metadata/MetadataInfoTest.java | 27 ++-
.../store/InMemoryWritableMetadataServiceTest.java | 111 -----------
.../store/RemoteWritableMeatadataServiceTest.java | 190 ------------------
.../RemoteWritableMetadataServiceDelegateTest.java | 216 ---------------------
.../registry/client/ServiceDiscoveryRegistry.java | 3 +-
...MetadataServiceURLParamsMetadataCustomizer.java | 8 +-
.../registry/client/metadata/MetadataUtils.java | 16 +-
.../metadata/ProtocolPortsMetadataCustomizer.java | 7 +-
.../metadata/RefreshServiceMetadataCustomizer.java | 47 -----
.../metadata/store/RemoteMetadataServiceImpl.java | 10 +-
...g.apache.dubbo.metadata.WritableMetadataService | 1 +
...ient.metadata.proxy.MetadataServiceProxyFactory | 2 -
.../client/metadata/URLRevisionResolverTest.java | 47 -----
.../registry/nacos/NacosServiceDiscovery.java | 3 +-
20 files changed, 84 insertions(+), 696 deletions(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index 3bdffa9..dd28b81 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -97,7 +97,7 @@ import static
org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA
import static
org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
import static org.apache.dubbo.common.function.ThrowableAction.execute;
import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;
-import static org.apache.dubbo.metadata.WritableMetadataService.getExtension;
+import static
org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;
import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;
@@ -718,7 +718,7 @@ public class DubboBootstrap extends GenericEventListener {
*/
private void initMetadataService() {
startMetadataReport();
- this.metadataService = getExtension(getMetadataType());
+ this.metadataService = getDefaultExtension();
this.metadataServiceExporter = new
ConfigurableMetadataServiceExporter(metadataService);
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java
index 7f4b85c..0563e43 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java
@@ -16,6 +16,8 @@
*/
package org.apache.dubbo.metadata;
+import org.apache.dubbo.common.extension.Activate;
+
import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
import static
org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
@@ -35,6 +37,7 @@ import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.WARMUP_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.WEIGHT_KEY;
+@Activate
public class DefaultMetadataParamsFilter implements MetadataParamsFilter {
@Override
public String[] include() {
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
index bf9aa68..01e3c09 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
@@ -17,15 +17,19 @@
package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.compiler.support.ClassUtils;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.common.utils.StringUtils;
import java.io.Serializable;
+import java.lang.reflect.Method;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
import static org.apache.dubbo.common.constants.CommonConstants.DOT_SEPARATOR;
import static
org.apache.dubbo.common.constants.CommonConstants.GROUP_CHAR_SEPERATOR;
@@ -39,6 +43,7 @@ public class MetadataInfo implements Serializable {
private Map<String, ServiceInfo> services;
public MetadataInfo() {
+ this.services = new HashMap<>();
}
public MetadataInfo(String app, String revision, Map<String, ServiceInfo>
services) {
@@ -68,15 +73,6 @@ public class MetadataInfo implements Serializable {
this.services.remove(key);
}
- public String revision() {
- StringBuilder sb = new StringBuilder();
- sb.append(app);
- for (Map.Entry<String, ServiceInfo> entry : services.entrySet()) {
- sb.append(entry.getValue().toString());
- }
- return RevisionResolver.calRevision(sb.toString());
- }
-
public String getApp() {
return app;
}
@@ -86,6 +82,15 @@ public class MetadataInfo implements Serializable {
}
public String getRevision() {
+ if (revision != null) {
+ return revision;
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append(app);
+ for (Map.Entry<String, ServiceInfo> entry : services.entrySet()) {
+ sb.append(entry.getValue().toDescString());
+ }
+ this.revision = RevisionResolver.calRevision(sb.toString());
return revision;
}
@@ -159,10 +164,12 @@ public class MetadataInfo implements Serializable {
params.put(p, value);
}
String[] methods = url.getParameter(METHODS_KEY,
(String[]) null);
- for (String method : methods) {
- String mValue = url.getMethodParameter(method, p);
- if (StringUtils.isNotEmpty(mValue)) {
- params.put(method + DOT_SEPARATOR + p, mValue);
+ if (methods != null) {
+ for (String method : methods) {
+ String mValue = url.getMethodParameter(method,
p);
+ if (StringUtils.isNotEmpty(mValue)) {
+ params.put(method + DOT_SEPARATOR + p,
mValue);
+ }
}
}
}
@@ -277,5 +284,19 @@ public class MetadataInfo implements Serializable {
}
return value == null ? defaultValue : value;
}
+
+ public String toDescString() {
+ return this.getMatchKey() + getMethodSignaturesString() +
getParams();
+ }
+
+ private String getMethodSignaturesString() {
+ SortedSet<String> methodStrings = new TreeSet();
+
+ Method[] methods = ClassUtils.forName(name).getMethods();
+ for (Method method : methods) {
+ methodStrings.add(method.toString());
+ }
+ return methodStrings.toString();
+ }
}
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/RevisionResolver.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/RevisionResolver.java
index 76d8cfb..f8ebd3b 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/RevisionResolver.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/RevisionResolver.java
@@ -54,4 +54,6 @@ public class RevisionResolver {
}
return new String(str);
}
+
+
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
index b453842..0de9683 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.metadata;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.rpc.model.ApplicationModel;
import static
org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;
@@ -28,6 +29,7 @@ import static
org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoad
*
* @since 2.7.5
*/
+@SPI("default")
public interface WritableMetadataService extends MetadataService {
/**
* Gets the current Dubbo Service name
@@ -81,8 +83,4 @@ public interface WritableMetadataService extends
MetadataService {
static WritableMetadataService getDefaultExtension() {
return
getExtensionLoader(WritableMetadataService.class).getDefaultExtension();
}
-
- static WritableMetadataService getExtension(String name) {
- return
getExtensionLoader(WritableMetadataService.class).getOrDefaultExtension(name);
- }
}
diff --git
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/CustomizableServiceInstanceListenerTest.java
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java
similarity index 53%
copy from
dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/CustomizableServiceInstanceListenerTest.java
copy to
dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java
index bf8d9d2..33bcbc7 100644
---
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/CustomizableServiceInstanceListenerTest.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java
@@ -14,26 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.registry.client.event.listener;
+package org.apache.dubbo.metadata;
-import org.apache.dubbo.registry.client.DefaultServiceInstanceTest;
-import
org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;
+import org.apache.dubbo.metadata.rest.User;
+
+import java.util.List;
-import org.junit.jupiter.api.Test;
/**
- * {@link CustomizableServiceInstanceListener} Test
- *
- * @since 2.7.5
+ * DemoService
*/
-public class CustomizableServiceInstanceListenerTest {
+public interface DemoService {
+
+ String sayName(String name);
+
+ void throwRuntimeException() throws RuntimeException;
+
+ List<User> getUsers(List<User> users);
- private CustomizableServiceInstanceListener listener = new
CustomizableServiceInstanceListener();
+ int echo(int i);
- @Test
- public void testOnEvent() {
- ServiceInstancePreRegisteredEvent event = new
ServiceInstancePreRegisteredEvent(this,
DefaultServiceInstanceTest.createInstance());
- // breaking test
- listener.onEvent(event);
- }
-}
+}
\ No newline at end of file
diff --git
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/CustomizableServiceInstanceListenerTest.java
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
similarity index 56%
rename from
dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/CustomizableServiceInstanceListenerTest.java
rename to
dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
index bf8d9d2..1d2f42e 100644
---
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/event/listener/CustomizableServiceInstanceListenerTest.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
@@ -14,26 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.registry.client.event.listener;
+package org.apache.dubbo.metadata;
-import org.apache.dubbo.registry.client.DefaultServiceInstanceTest;
-import
org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;
+import org.apache.dubbo.common.URL;
import org.junit.jupiter.api.Test;
-/**
- * {@link CustomizableServiceInstanceListener} Test
- *
- * @since 2.7.5
- */
-public class CustomizableServiceInstanceListenerTest {
+public class MetadataInfoTest {
+ @Test
+ public void revisionTest() {
+ MetadataInfo metadataInfo = new MetadataInfo();
+ metadataInfo.setApp("demo");
- private CustomizableServiceInstanceListener listener = new
CustomizableServiceInstanceListener();
+ URL url =
URL.valueOf("dubbo://10.230.11.211:20880/org.apache.dubbo.metadata.DemoService?timeout=1000&testKey=aaa");
+ MetadataInfo.ServiceInfo serviceInfo = new
MetadataInfo.ServiceInfo(url);
+ metadataInfo.addService(serviceInfo);
- @Test
- public void testOnEvent() {
- ServiceInstancePreRegisteredEvent event = new
ServiceInstancePreRegisteredEvent(this,
DefaultServiceInstanceTest.createInstance());
- // breaking test
- listener.onEvent(event);
+ System.out.println(serviceInfo.toDescString());
+ System.out.println(metadataInfo.getRevision());
}
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataServiceTest.java
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataServiceTest.java
deleted file mode 100644
index 1995644..0000000
---
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataServiceTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.metadata.store;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.NetUtils;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-/**
- * 2019-08-29
- */
-public class InMemoryWritableMetadataServiceTest {
-
- String interfaceName =
"org.apache.dubbo.metadata.store.InterfaceNameTestService2", version = "0.9.9",
group = null;
- URL url = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() + ":4444/?interface=" + interfaceName
+ "&version="
- + version + "&application=vicpubprovder&side=provider");
-
- @BeforeEach
- public void before() {
- }
-
- @Test
- public void testPublishServiceDefinition() {
- InMemoryWritableMetadataService inMemoryWritableMetadataService = new
InMemoryWritableMetadataService();
- inMemoryWritableMetadataService.publishServiceDefinition(url);
-
- String v =
inMemoryWritableMetadataService.getServiceDefinition(interfaceName, version,
group);
- Assertions.assertNotNull(v);
- }
-
- @Test
- public void testExportURL() {
- InMemoryWritableMetadataService inMemoryWritableMetadataService = new
InMemoryWritableMetadataService();
- URL url = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test567Service?version=1.0.44&application=vicpubprovder&side=provider");
- inMemoryWritableMetadataService.exportURL(url);
-
-
Assertions.assertTrue(inMemoryWritableMetadataService.exportedServiceURLs.size()
== 1);
-
Assertions.assertEquals(inMemoryWritableMetadataService.exportedServiceURLs.get(url.getServiceKey()).first(),
url);
- }
-
- @Test
- public void testSubscribeURL() {
- InMemoryWritableMetadataService inMemoryWritableMetadataService = new
InMemoryWritableMetadataService();
- URL url = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test678Service?version=1.0.44&application=vicpubprovder&side=provider");
- inMemoryWritableMetadataService.subscribeURL(url);
-
-
Assertions.assertTrue(inMemoryWritableMetadataService.subscribedServiceURLs.size()
== 1);
-
Assertions.assertEquals(inMemoryWritableMetadataService.subscribedServiceURLs.get(url.getServiceKey()).first(),
url);
- }
-
- @Test
- public void testUnExportURL() {
- InMemoryWritableMetadataService inMemoryWritableMetadataService = new
InMemoryWritableMetadataService();
- URL url = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test567Service?version=1.0.44&application=vicpubprovder&side=provider");
- inMemoryWritableMetadataService.exportURL(url);
-
-
Assertions.assertTrue(inMemoryWritableMetadataService.exportedServiceURLs.size()
== 1);
-
Assertions.assertEquals(inMemoryWritableMetadataService.exportedServiceURLs.get(url.getServiceKey()).first(),
url);
-
- inMemoryWritableMetadataService.unexportURL(url);
-
Assertions.assertTrue(inMemoryWritableMetadataService.exportedServiceURLs.size()
== 0);
- }
-
- @Test
- public void testUnSubscribeURL() {
- InMemoryWritableMetadataService inMemoryWritableMetadataService = new
InMemoryWritableMetadataService();
- URL url = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test678Service?version=1.0.44&application=vicpubprovder&side=provider");
- inMemoryWritableMetadataService.subscribeURL(url);
-
-
Assertions.assertTrue(inMemoryWritableMetadataService.subscribedServiceURLs.size()
== 1);
-
Assertions.assertEquals(inMemoryWritableMetadataService.subscribedServiceURLs.get(url.getServiceKey()).first(),
url);
-
- inMemoryWritableMetadataService.unsubscribeURL(url);
-
Assertions.assertTrue(inMemoryWritableMetadataService.subscribedServiceURLs.size()
== 0);
- }
-
-}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/RemoteWritableMeatadataServiceTest.java
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/RemoteWritableMeatadataServiceTest.java
deleted file mode 100644
index bdd748c..0000000
---
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/RemoteWritableMeatadataServiceTest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.metadata.store;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
-import org.apache.dubbo.metadata.report.MetadataReportInstance;
-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;
-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
-import
org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
-import org.apache.dubbo.metadata.test.JTestMetadataReport4Test;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-
-import com.google.gson.Gson;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.util.Map;
-
-/**
- * 2018/9/14
- */
-public class RemoteWritableMeatadataServiceTest {
- URL url = URL.valueOf("JTest://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
- RemoteWritableMetadataService metadataReportService1;
- InMemoryWritableMetadataService inMemoryWritableMetadataService;
-
- @BeforeEach
- public void before() {
- inMemoryWritableMetadataService = new
InMemoryWritableMetadataService();
- metadataReportService1 = new
RemoteWritableMetadataService(inMemoryWritableMetadataService);
- MetadataReportInstance.init(url);
- }
-
- @Test
- public void testPublishProviderNoInterfaceName() {
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestService?version=1.0.0&application=vicpubprovder&side=provider");
- metadataReportService1.publishServiceDefinition(publishUrl);
-
- Assertions.assertTrue(metadataReportService1.getMetadataReport()
instanceof JTestMetadataReport4Test);
-
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
-
Assertions.assertTrue(!jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl)));
-
- }
-
- @Test
- public void testPublishProviderWrongInterface() {
-
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestService?version=1.0.0&application=vicpu&interface=ccc&side=provider");
- metadataReportService1.publishServiceDefinition(publishUrl);
-
- Assertions.assertTrue(metadataReportService1.getMetadataReport()
instanceof JTestMetadataReport4Test);
-
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
-
Assertions.assertTrue(!jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl)));
-
- }
-
- @Test
- public void testPublishProviderContainInterface() throws
InterruptedException {
-
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestService?version=1.0.3&application=vicpubp&interface=org.apache.dubbo.metadata.store.InterfaceNameTestService&side=provider");
- metadataReportService1.publishServiceDefinition(publishUrl);
- Thread.sleep(300);
-
- Assertions.assertTrue(metadataReportService1.getMetadataReport()
instanceof JTestMetadataReport4Test);
-
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
-
Assertions.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl)));
-
- String value =
jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getProviderKey(publishUrl));
- FullServiceDefinition fullServiceDefinition =
toServiceDefinition(value);
- Map<String, String> map = fullServiceDefinition.getParameters();
- Assertions.assertEquals(map.get("application"), "vicpubp");
- Assertions.assertEquals(map.get("version"), "1.0.3");
- Assertions.assertEquals(map.get("interface"),
"org.apache.dubbo.metadata.store.InterfaceNameTestService");
- }
-
- @Test
- public void testPublishConsumer() throws InterruptedException {
-
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestService?version=1.0.x&application=vicpubconsumer&side=consumer");
- metadataReportService1.publishServiceDefinition(publishUrl);
- Thread.sleep(300);
-
- Assertions.assertTrue(metadataReportService1.getMetadataReport()
instanceof JTestMetadataReport4Test);
-
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
-
Assertions.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getConsumerKey(publishUrl)));
-
- String value =
jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getConsumerKey(publishUrl));
- Gson gson = new Gson();
- Map<String, String> map = gson.fromJson(value, Map.class);
- Assertions.assertEquals(map.get("application"), "vicpubconsumer");
- Assertions.assertEquals(map.get("version"), "1.0.x");
-
- }
-
- @Test
- public void testPublishServiceDefinition() {
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestService?version=1.0.0&application=vicpubprovder&side=provider");
- metadataReportService1.publishServiceDefinition(publishUrl);
-
- Assertions.assertTrue(metadataReportService1.getMetadataReport()
instanceof JTestMetadataReport4Test);
-
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
-
Assertions.assertTrue(!jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl)));
-
- }
-
- @Test
- public void testUnexportURL() {
-
- }
-
- @Test
- public void testRefreshMetadataService() throws InterruptedException {
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadataService?version=1.0.8&application=vicpubprovder&side=provider");
- URL publishUrl2 = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadata2Service?version=1.0.5&application=vicpubprovder&side=provider");
- inMemoryWritableMetadataService.exportURL(publishUrl);
- inMemoryWritableMetadataService.exportURL(publishUrl2);
- String exportedRevision = "9999";
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
- int origSize = jTestMetadataReport4Test.store.size();
-
Assertions.assertTrue(metadataReportService1.refreshMetadata(exportedRevision,
"1109"));
- Thread.sleep(200);
- int size = jTestMetadataReport4Test.store.size();
- Assertions.assertTrue(size - origSize == 2);
-
Assertions.assertEquals(jTestMetadataReport4Test.store.get(getServiceMetadataIdentifier(publishUrl,
exportedRevision).getUniqueKey(KeyTypeEnum.UNIQUE_KEY)),
publishUrl.toFullString());
-
Assertions.assertEquals(jTestMetadataReport4Test.store.get(getServiceMetadataIdentifier(publishUrl2,
exportedRevision).getUniqueKey(KeyTypeEnum.UNIQUE_KEY)),
publishUrl2.toFullString());
- }
-
- @Test
- public void testRefreshMetadataSubscription() throws InterruptedException {
- URL subscriberUrl1 = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadata00Service?version=1.0.8&application=vicpubprovder&side=provider");
- URL subscriberUrl2 = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadata09Service?version=1.0.5&application=vicpubprovder&side=provider");
- inMemoryWritableMetadataService.subscribeURL(subscriberUrl1);
- inMemoryWritableMetadataService.subscribeURL(subscriberUrl2);
- String exportedRevision = "9999";
- String subscriberRevision = "2099";
- String applicationName = "wriableMetadataService";
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) metadataReportService1.getMetadataReport();
- int origSize = jTestMetadataReport4Test.store.size();
- ApplicationModel.setApplication(applicationName);
-
Assertions.assertTrue(metadataReportService1.refreshMetadata(exportedRevision,
subscriberRevision));
- Thread.sleep(200);
- int size = jTestMetadataReport4Test.store.size();
- Assertions.assertTrue(size - origSize == 1);
- String r =
jTestMetadataReport4Test.store.get(getSubscriberMetadataIdentifier(
- subscriberRevision).getUniqueKey(KeyTypeEnum.UNIQUE_KEY));
- Assertions.assertNotNull(r);
- }
-
- private ServiceMetadataIdentifier getServiceMetadataIdentifier(URL
publishUrl, String exportedRevision) {
- ServiceMetadataIdentifier serviceMetadataIdentifier = new
ServiceMetadataIdentifier(publishUrl);
- serviceMetadataIdentifier.setRevision(exportedRevision);
- serviceMetadataIdentifier.setProtocol(publishUrl.getProtocol());
- return serviceMetadataIdentifier;
- }
-
- private SubscriberMetadataIdentifier
getSubscriberMetadataIdentifier(String subscriberRevision) {
- SubscriberMetadataIdentifier subscriberMetadataIdentifier = new
SubscriberMetadataIdentifier();
- subscriberMetadataIdentifier.setRevision(subscriberRevision);
-
subscriberMetadataIdentifier.setApplication(ApplicationModel.getApplication());
- return subscriberMetadataIdentifier;
- }
-
- private FullServiceDefinition toServiceDefinition(String urlQuery) {
- Gson gson = new Gson();
- return gson.fromJson(urlQuery, FullServiceDefinition.class);
- }
-
-}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataServiceDelegateTest.java
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataServiceDelegateTest.java
deleted file mode 100644
index 7c95e31..0000000
---
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataServiceDelegateTest.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.metadata.store;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.metadata.WritableMetadataService;
-import org.apache.dubbo.metadata.report.MetadataReportInstance;
-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;
-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;
-import
org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;
-import org.apache.dubbo.metadata.test.JTestMetadataReport4Test;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.util.SortedSet;
-
-
-/**
- * 2019-08-27
- */
-public class RemoteWritableMetadataServiceDelegateTest {
- static URL metadataURL = URL.valueOf("JTest://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Tes33tService?version=1.0.0&application=vic");
-
- RemoteWritableMetadataServiceDelegate metadataReportService;
-
- String interfaceName =
"org.apache.dubbo.metadata.store.InterfaceNameTestService80", version =
"0.6.9", group = null;
- URL url = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() + ":4444/?interface=" + interfaceName
+ "&version="
- + version + "&application=vicpubprovder&side=provider");
-
- @BeforeAll
- public static void beforeAll() {
- MetadataReportInstance.init(metadataURL);
- }
-
- @BeforeEach
- public void before() {
- metadataReportService = new RemoteWritableMetadataServiceDelegate();
- }
-
-
- @Test
- public void testInstance() {
- WritableMetadataService metadataReportService1 =
WritableMetadataService.getExtension("remote");
- WritableMetadataService metadataReportService2 =
WritableMetadataService.getExtension("remote");
- Assertions.assertSame(metadataReportService1, metadataReportService2);
- Assertions.assertTrue(metadataReportService1 instanceof
RemoteWritableMetadataServiceDelegate);
- }
-
- @Test
- public void testPublishServiceDefinition() throws InterruptedException {
- String interfaceName =
"org.apache.dubbo.metadata.store.InterfaceNameTestService2", version = "0.9.9",
group = null;
- URL tmpUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() + ":4444/?interface=" + interfaceName
+ "&version="
- + version + "&application=vicpubprovder&side=provider");
- metadataReportService.publishServiceDefinition(tmpUrl);
- Thread.sleep(150);
- String v = metadataReportService.getServiceDefinition(interfaceName,
version, group);
- Assertions.assertNotNull(v);
- }
-
- @Test
- public void testExportURL() throws InterruptedException {
- URL url = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test567Service?version=1.0.44&application=vicpubprovder&side=provider");
- metadataReportService.exportURL(url);
- Thread.sleep(100);
-
Assertions.assertTrue(getInMemoryWriableMetadataService().exportedServiceURLs.size()
== 1);
-
Assertions.assertEquals(getInMemoryWriableMetadataService().exportedServiceURLs.get(url.getServiceKey()).first(),
url);
- }
-
- @Test
- public void testSubscribeURL() throws InterruptedException {
- URL url = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test0678Service?version=1.3.144&application=vicpubprovder&side=provider");
- int origSize =
getInMemoryWriableMetadataService().subscribedServiceURLs.size();
- metadataReportService.subscribeURL(url);
- Thread.sleep(100);
- int size =
getInMemoryWriableMetadataService().subscribedServiceURLs.size();
- Assertions.assertTrue(size - origSize == 1);
-
Assertions.assertEquals(getInMemoryWriableMetadataService().subscribedServiceURLs.get(url.getServiceKey()).first(),
url);
- }
-
- @Test
- public void testUnExportURL() throws InterruptedException {
- URL url = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test0567Service?version=1.2.44&application=vicpubprovder&side=provider");
- int origSize =
getInMemoryWriableMetadataService().exportedServiceURLs.size();
- metadataReportService.exportURL(url);
- Thread.sleep(100);
- int size =
getInMemoryWriableMetadataService().exportedServiceURLs.size();
- Assertions.assertTrue(size - origSize == 1);
-
Assertions.assertEquals(getInMemoryWriableMetadataService().exportedServiceURLs.get(url.getServiceKey()).first(),
url);
-
- metadataReportService.unexportURL(url);
- int unexportSize =
getInMemoryWriableMetadataService().exportedServiceURLs.size();
- Assertions.assertTrue(size - unexportSize == 1);
- }
-
- @Test
- public void testUnSubscribeURL() throws InterruptedException {
- URL url = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.Test0678Service?version=1.5.477&application=vicpubprovder&side=provider");
- int origSize =
getInMemoryWriableMetadataService().subscribedServiceURLs.size();
- metadataReportService.subscribeURL(url);
- Thread.sleep(100);
- int size =
getInMemoryWriableMetadataService().subscribedServiceURLs.size();
- Assertions.assertTrue(size - origSize == 1);
-
Assertions.assertEquals(getInMemoryWriableMetadataService().subscribedServiceURLs.get(url.getServiceKey()).first(),
url);
-
- metadataReportService.unsubscribeURL(url);
- Thread.sleep(100);
-
Assertions.assertTrue(getInMemoryWriableMetadataService().subscribedServiceURLs.size()
== 0);
- }
-
- @Test
- public void testRefreshMetadataService() throws InterruptedException {
- URL publishUrl = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadataService?version=1.6.8&application=vicpubprovder&side=provider");
- URL publishUrl2 = URL.valueOf("dubbo://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadata2Service?version=1.6.5&application=vicpubprovder&side=provider");
- metadataReportService.exportURL(publishUrl);
- metadataReportService.exportURL(publishUrl2);
- String exportedRevision = "9999";
- JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) MetadataReportInstance.getMetadataReports(true);
- int origSize = jTestMetadataReport4Test.store.size();
- int num = countNum();
-
Assertions.assertTrue(metadataReportService.refreshMetadata(exportedRevision,
"1109"));
- Thread.sleep(200);
- int size = jTestMetadataReport4Test.store.size();
- Assertions.assertTrue(size - origSize == num);
-
Assertions.assertEquals(jTestMetadataReport4Test.store.get(getServiceMetadataIdentifier(publishUrl,
exportedRevision).getUniqueKey(KeyTypeEnum.UNIQUE_KEY)),
publishUrl.toFullString());
-
Assertions.assertEquals(jTestMetadataReport4Test.store.get(getServiceMetadataIdentifier(publishUrl2,
exportedRevision).getUniqueKey(KeyTypeEnum.UNIQUE_KEY)),
publishUrl2.toFullString());
- }
-
-
- // unstable test
-// @Test
-// public void testRefreshMetadataSubscription() throws
InterruptedException {
-// URL subscriberUrl1 = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadata00Service?version=2.0.8&application=vicpubprovder&side=provider");
-// URL subscriberUrl2 = URL.valueOf("subscriber://" +
NetUtils.getLocalAddress().getHostName() +
":4444/org.apache.dubbo.TestRefreshMetadata09Service?version=2.0.5&application=vicpubprovder&side=provider");
-// metadataReportService.subscribeURL(subscriberUrl1);
-// metadataReportService.subscribeURL(subscriberUrl2);
-// String exportedRevision = "9999";
-// String subscriberRevision = "2099";
-// String applicationName = "wriableMetadataService";
-// JTestMetadataReport4Test jTestMetadataReport4Test =
(JTestMetadataReport4Test) MetadataReportInstance.getMetadataReport(true);
-// int origSize = jTestMetadataReport4Test.store.size();
-// ApplicationModel.setApplication(applicationName);
-//
Assertions.assertTrue(metadataReportService.refreshMetadata(exportedRevision,
subscriberRevision));
-// Thread.sleep(200);
-// int size = jTestMetadataReport4Test.store.size();
-// Assertions.assertTrue(size - origSize == 1);
-// String r =
jTestMetadataReport4Test.store.get(getSubscriberMetadataIdentifier(
-// subscriberRevision).getUniqueKey(KeyTypeEnum.UNIQUE_KEY));
-// Assertions.assertNotNull(r);
-// }
-
-
- private ServiceMetadataIdentifier getServiceMetadataIdentifier(URL
publishUrl, String exportedRevision) {
- ServiceMetadataIdentifier serviceMetadataIdentifier = new
ServiceMetadataIdentifier(publishUrl);
- serviceMetadataIdentifier.setRevision(exportedRevision);
- serviceMetadataIdentifier.setProtocol(publishUrl.getProtocol());
- return serviceMetadataIdentifier;
- }
-
- private SubscriberMetadataIdentifier
getSubscriberMetadataIdentifier(String subscriberRevision) {
- SubscriberMetadataIdentifier subscriberMetadataIdentifier = new
SubscriberMetadataIdentifier();
- subscriberMetadataIdentifier.setRevision(subscriberRevision);
-
subscriberMetadataIdentifier.setApplication(ApplicationModel.getApplication());
- return subscriberMetadataIdentifier;
- }
-
- private InMemoryWritableMetadataService
getInMemoryWriableMetadataService() {
- return (InMemoryWritableMetadataService)
metadataReportService.defaultWritableMetadataService;
- }
-
- private int countNum() {
- int num = 0;
- for (SortedSet<URL> tmp :
getInMemoryWriableMetadataService().exportedServiceURLs.values()) {
- num += tmp.size();
- }
- if
(!getInMemoryWriableMetadataService().subscribedServiceURLs.values().isEmpty())
{
- num++;
- }
- return num;
- }
-}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
index 2607054..48ceffd 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
@@ -29,7 +29,6 @@ import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.registry.Registry;
import
org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
-import org.apache.dubbo.registry.client.metadata.MetadataUtils;
import org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer;
import org.apache.dubbo.registry.support.FailbackRegistry;
@@ -132,7 +131,7 @@ public class ServiceDiscoveryRegistry extends
FailbackRegistry {
this.serviceDiscovery = createServiceDiscovery(registryURL);
this.subscribedServices =
parseServices(registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY));
this.serviceNameMapping = ServiceNameMapping.getDefaultExtension();
- this.writableMetadataService = MetadataUtils.getLocalMetadataService();
+ this.writableMetadataService =
WritableMetadataService.getDefaultExtension();
}
public ServiceDiscovery getServiceDiscovery() {
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
index 5ad373a..be78440 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
@@ -25,10 +25,9 @@ import
org.apache.dubbo.registry.client.ServiceInstanceMetadataCustomizer;
import java.util.SortedSet;
import static org.apache.dubbo.metadata.MetadataService.toURLs;
-import static org.apache.dubbo.metadata.WritableMetadataService.getExtension;
+import static
org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceParameter;
-import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataStorageType;
/**
* An {@link ServiceInstanceMetadataCustomizer} to customize the {@link URL
urls} of {@link MetadataService}
@@ -46,10 +45,7 @@ public class MetadataServiceURLParamsMetadataCustomizer
extends ServiceInstanceM
@Override
public String resolveMetadataPropertyValue(ServiceInstance
serviceInstance) {
-
- String metadataStorageType = getMetadataStorageType(serviceInstance);
-
- WritableMetadataService writableMetadataService =
getExtension(metadataStorageType);
+ WritableMetadataService writableMetadataService =
getDefaultExtension();
String serviceInterface = MetadataService.class.getName();
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
index 0926f7d..9cbe577 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
@@ -23,7 +23,6 @@ import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.metadata.MetadataService;
import org.apache.dubbo.metadata.WritableMetadataService;
import org.apache.dubbo.registry.client.ServiceInstance;
-import
org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;
import
org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
@@ -55,27 +54,16 @@ public class MetadataUtils {
if (remoteMetadataService == null) {
synchronized (REMOTE_LOCK) {
if (remoteMetadataService == null) {
- remoteMetadataService = new
RemoteMetadataServiceImpl(getLocalMetadataService());
+ remoteMetadataService = new
RemoteMetadataServiceImpl(WritableMetadataService.getDefaultExtension());
}
}
}
return remoteMetadataService;
}
- public static WritableMetadataService getLocalMetadataService() {
- if (localMetadataService == null) {
- synchronized (LOCK) {
- if (localMetadataService == null) {
- localMetadataService = new
InMemoryWritableMetadataService();
- }
- }
- }
- return localMetadataService;
- }
-
public static void publishServiceDefinition(URL url) {
// store in local
- getLocalMetadataService().publishServiceDefinition(url);
+
WritableMetadataService.getDefaultExtension().publishServiceDefinition(url);
// send to remote
getRemoteMetadataService().publishServiceDefinition(url);
}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
index 2d83295..c8dffc4 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
@@ -26,8 +26,6 @@ import org.apache.dubbo.rpc.Protocol;
import java.util.HashMap;
import java.util.Map;
-import static org.apache.dubbo.metadata.WritableMetadataService.getExtension;
-import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataStorageType;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setEndpoints;
/**
@@ -40,10 +38,7 @@ public class ProtocolPortsMetadataCustomizer implements
ServiceInstanceCustomize
@Override
public void customize(ServiceInstance serviceInstance) {
-
- String metadataStoredType = getMetadataStorageType(serviceInstance);
-
- WritableMetadataService writableMetadataService =
getExtension(metadataStoredType);
+ WritableMetadataService writableMetadataService =
WritableMetadataService.getDefaultExtension();
Map<String, Integer> protocols = new HashMap<>();
writableMetadataService.getExportedURLs()
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java
deleted file mode 100644
index 07b6bc7..0000000
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.registry.client.metadata;
-
-import org.apache.dubbo.metadata.WritableMetadataService;
-import org.apache.dubbo.registry.client.ServiceInstance;
-import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;
-
-import static org.apache.dubbo.metadata.WritableMetadataService.getExtension;
-import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getExportedServicesRevision;
-import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataStorageType;
-import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getSubscribedServicesRevision;
-
-/**
- * An {@link ServiceInstanceCustomizer} to refresh metadata.
- */
-public class RefreshServiceMetadataCustomizer implements
ServiceInstanceCustomizer {
-
- public int getPriority() {
- return MIN_PRIORITY;
- }
-
- @Override
- public void customize(ServiceInstance serviceInstance) {
-
- String metadataStoredType = getMetadataStorageType(serviceInstance);
-
- WritableMetadataService writableMetadataService =
getExtension(metadataStoredType);
-
-
writableMetadataService.refreshMetadata(getExportedServicesRevision(serviceInstance),
- getSubscribedServicesRevision(serviceInstance));
- }
-}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java
index ac0cbc2..799d2aa 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java
@@ -44,6 +44,7 @@ import static
org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;
import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
+import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
public class RemoteMetadataServiceImpl {
@@ -59,14 +60,17 @@ public class RemoteMetadataServiceImpl {
}
public void publishMetadata(ServiceInstance instance) {
- SubscriberMetadataIdentifier identifier = new
SubscriberMetadataIdentifier(instance.getServiceName(),
ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));
+ MetadataInfo metadataInfo = localMetadataService.getMetadataInfo();
+ SubscriberMetadataIdentifier identifier = new
SubscriberMetadataIdentifier(instance.getServiceName(),
metadataInfo.getRevision());
getMetadataReports().forEach(metadataReport -> {
- metadataReport.publishAppMetadata(identifier,
localMetadataService.getMetadataInfo());
+
instance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME,
metadataInfo.getRevision());
+ metadataReport.publishAppMetadata(identifier, metadataInfo);
});
}
public MetadataInfo getMetadata(ServiceInstance instance) {
- SubscriberMetadataIdentifier identifier = new
SubscriberMetadataIdentifier(instance.getServiceName(),
ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));
+ SubscriberMetadataIdentifier identifier = new
SubscriberMetadataIdentifier(instance.getServiceName(),
+
ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));
for (MetadataReport reporter : getMetadataReports()) {
MetadataInfo metadataInfo = reporter.getAppMetadata(identifier,
instance.getMetadata());
if (metadataInfo != null) {
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
b/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
new file mode 100644
index 0000000..0030270
--- /dev/null
+++
b/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
@@ -0,0 +1 @@
+default=org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService
\ No newline at end of file
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.proxy.MetadataServiceProxyFactory
b/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.proxy.MetadataServiceProxyFactory
deleted file mode 100644
index d9283de..0000000
---
a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.proxy.MetadataServiceProxyFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-local=org.apache.dubbo.registry.client.metadata.proxy.DefaultMetadataServiceProxyFactory
-remote=org.apache.dubbo.registry.client.metadata.proxy.RemoteMetadataServiceProxyFactory
\ No newline at end of file
diff --git
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/URLRevisionResolverTest.java
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/URLRevisionResolverTest.java
deleted file mode 100644
index 3386bba..0000000
---
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/URLRevisionResolverTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.registry.client.metadata;
-
-import org.junit.jupiter.api.Test;
-
-import static java.util.Arrays.asList;
-import static
org.apache.dubbo.registry.client.metadata.URLRevisionResolver.NO_REVISION;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- * {@link URLRevisionResolver} Test
- *
- * @since 2.7.5
- */
-public class URLRevisionResolverTest {
-
- private static final String URL =
"dubbo://192.168.0.102:20881/org.apache.dubbo.registry.client.metadata.URLRevisionResolverTest";
-
- private final URLRevisionResolver resolver = new URLRevisionResolver();
-
- @Test
- public void testResolve() {
- String revision = resolver.resolve(asList());
- assertEquals(NO_REVISION, revision);
-
- revision = resolver.resolve(null);
- assertEquals(NO_REVISION, revision);
-
- revision = resolver.resolve(asList(URL));
- assertEquals("7960327984321481979", revision);
- }
-}
diff --git
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
index f27a50d..b84bfa9 100644
---
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
+++
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
@@ -30,7 +30,6 @@ import com.alibaba.nacos.api.naming.listener.NamingEvent;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.alibaba.nacos.api.naming.pojo.ListView;
-import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@ -121,7 +120,7 @@ public class NacosServiceDiscovery implements
ServiceDiscovery {
private void handleEvent(NamingEvent event,
ServiceInstancesChangedListener listener) {
String serviceName = event.getServiceName();
- Collection<ServiceInstance> serviceInstances = event.getInstances()
+ List<ServiceInstance> serviceInstances = event.getInstances()
.stream()
.map(NacosNamingServiceUtils::toServiceInstance)
.collect(Collectors.toList());