<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 3.0.5
* Operating System version: xxx
* Java version: xxx

### Steps to reproduce this issue

Frequent exceptions in unit testing: 

```
[INFO] [02/11/21 06:31:32:300 UTC] ERROR listener.ServiceInstancesChangedListener:  [DUBBO] Failed to load service metadata, meta type is local, dubbo version: 3.0.5-SNAPSHOT, current host: 172.28.16.1
[INFO] java.lang.IllegalStateException: There's no ApplicationConfig specified.
[INFO] 	at org.apache.dubbo.config.context.ConfigManager.lambda$getApplicationOrElseThrow$0(ConfigManager.java:85)
[INFO] 	at java.util.Optional.orElseThrow(Optional.java:290)
[INFO] 	at org.apache.dubbo.config.context.ConfigManager.getApplicationOrElseThrow(ConfigManager.java:85)
[INFO] 	at org.apache.dubbo.rpc.model.ApplicationModel.getCurrentConfig(ApplicationModel.java:315)
[INFO] 	at org.apache.dubbo.registry.client.metadata.StandardMetadataServiceURLBuilder.generateUrlWithoutMetadata(StandardMetadataServiceURLBuilder.java:112)
[INFO] 	at org.apache.dubbo.registry.client.metadata.StandardMetadataServiceURLBuilder.build(StandardMetadataServiceURLBuilder.java:82)
[INFO] 	at org.apache.dubbo.registry.client.metadata.MetadataUtils.referProxy(MetadataUtils.java:93)
[INFO] 	at org.apache.dubbo.registry.client.metadata.MetadataUtils.lambda$getMetadataServiceProxy$0(MetadataUtils.java:67)
[INFO] 	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
[INFO] 	at org.apache.dubbo.registry.client.metadata.MetadataUtils.getMetadataServiceProxy(MetadataUtils.java:67)
[INFO] 	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.doGetMetadataInfo(ServiceInstancesChangedListener.java:379)
[INFO] 	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.getRemoteMetadata(ServiceInstancesChangedListener.java:330)
[INFO] 	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.onEvent(ServiceInstancesChangedListener.java:143)
[INFO] 	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener$AddressRefreshRetryTask.run(ServiceInstancesChangedListener.java:493)
[INFO] 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[INFO] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[INFO] 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
[INFO] 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
[INFO] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[INFO] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[INFO] 	at java.lang.Thread.run(Thread.java:748)
```

private URL generateUrlWithoutMetadata(String serviceName, String host, Integer instancePort) {
        Integer port = ApplicationModel.defaultModel().getCurrentConfig().getMetadataServicePort();
        if (port == null || port < 1) {
            logger.warn("Metadata Service Port is not provided, since DNS is not able to negotiate the metadata port " +
                    "between Provider and Consumer, will try to use instance port as the default metadata port.");
            port = instancePort;
        }
        if (port == null || port < 1) {
            String message = "Metadata Service Port should be specified for consumer. " +
                    "Please set dubbo.application.metadataServicePort and " +
                    "make sure it has been set on provider side. " +
                    "ServiceName: " + serviceName + " Host: " + host;
            throw new IllegalStateException(message);
        }
        URLBuilder urlBuilder = new URLBuilder()
                .setHost(host)
                .setPort(port)
                .setProtocol(DUBBO_PROTOCOL)
                .setPath(MetadataService.class.getName())
                .addParameter(TIMEOUT_KEY, ConfigurationUtils.get(applicationModel, METADATA_PROXY_TIMEOUT_KEY, DEFAULT_METADATA_TIMEOUT_VALUE))
                .addParameter(Constants.RECONNECT_KEY, false)
                .addParameter(SIDE_KEY, CONSUMER)
                .addParameter(GROUP_KEY, serviceName)
                .addParameter(VERSION_KEY, MetadataService.VERSION);
        
        urlBuilder.addParameter("getAndListenInstanceMetadata.1.callback", true);
        return urlBuilder.build();
    }
}