### Environment

* Dubbo version: 3.0
集成构建时，执行GenericServiceTest测试方法下面的语句时，
```
        // Test generic service without interface class locally
        result = genericServiceWithoutInterfaceRef.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{"generic"});
```
ReferenceConfig的checkInvokerAvailable方法有时会抛异常，导致集成构建失败，异常信息如下：
java.lang.IllegalStateException: Failed to check the status of the service org.apache.dubbo.config.spring.api.LocalMissClass. No provider available for the service org.apache.dubbo.config.spring.api.LocalMissClass from the url dubbo://10.1.0.184/org.apache.dubbo.config.spring.api.LocalMissClass?application=dubbo-generic-consumer&dubbo=2.0.2&file.cache=false&generic=true&init=false&interface=org.apache.dubbo.config.spring.api.LocalMissClass&metadata-type=remote&pid=9816&register.ip=10.1.0.184&release=3.0.3-SNAPSHOT&side=consumer&sticky=false&timestamp=1630699707283 to the consumer 10.1.0.184 use dubbo version 3.0.3-SNAPSHOT
	at org.apache.dubbo.config.spring.schema.GenericServiceTest.testGeneric(GenericServiceTest.java:97)

* 更新2021-09-10：
执行ServiceDiscoveryRegistryDirectory的refreshInvoker方法刷新urlInvokerMap的线程和执行ReferenceConfig的init方法的线程不是一个线程，刷新的线程名是main-EventThread，执行init的线程是main线程。而refreshInvoker方法调用toInvokers时会先把当前的this.urlInvokerMap里面的entry全清，在将newUrlInvokerMap重新赋值给this.urlInvokerMap前，如果恰好遇到执行init的main线程在执行isAvailable判断就会因为this.urlInvokerMap没有entry而返回false。
重现方法：在ServiceDiscoveryRegistryDirectory的toInvokers方法调用返回的下一行代码设置断点，在isAvailable的Map<String, Invoker<T>> localUrlInvokerMap = urlInvokerMap处设置断点，执行到toInvokers返回时暂停main-EventThread线程执行，切换到停留在isAvailable的main线程继续执行，就能重现这个issue。

PS：
采用genericServiceWithoutInterface方式的JavaConfigReferenceBeanTest的testGenericServiceAnnotationBean方法的165行有时也抛异常
* 更新2021-09-10：这个RpcException异常可能是上一个测试方法执行AfterEach释放了全局资源干扰了仍在运行的dubbo后台线程导致的，已另开issue
```
        Object sayHelloResult = genericServiceWithoutInterface.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{"Dubbo"});
```
只是抛的异常是RpcException: Directory already destroyed
```
2021-09-03T18:39:04.9792146Z org.apache.dubbo.rpc.RpcException: Directory already destroyed .url: zookeeper://127.0.0.1:2181/org.apache.dubbo.registry.RegistryService?application=consumer-app&dubbo=2.0.2&file.cache=false&pid=8884&release=3.0.3-SNAPSHOT&timestamp=1630694303313
2021-09-03T18:39:04.9797067Z 	at org.apache.dubbo.config.spring.reference.javaconfig.JavaConfigReferenceBeanTest.testGenericServiceAnnotationBean(JavaConfigReferenceBeanTest.java:165)
```
List<Configurator> localDynamicConfigurators = referenceConfigurationListener.getConfigurators(); 
            doOverrideUrl(localDynamicConfigurators);
        }
    }
    private void doOverrideUrl(List<Configurator> configurators) {
        if (CollectionUtils.isNotEmpty(configurators)) {
            for (Configurator configurator : configurators) {
                this.overrideDirectoryUrl = configurator.configure(overrideDirectoryUrl);
            }
        }
    }
    private static class ReferenceConfigurationListener extends AbstractConfiguratorListener {
        private RegistryDirectory directory;
        private URL url;
        ReferenceConfigurationListener(ModuleModel moduleModel, RegistryDirectory directory, URL url) {
            super(moduleModel);
            this.directory = directory;
            this.url = url;
            this.initWith(DynamicConfiguration.getRuleKey(url) + CONFIGURATORS_SUFFIX);
        }
        void stop() {
            this.stopListen(DynamicConfiguration.getRuleKey(url) + CONFIGURATORS_SUFFIX);
        }
        @Override
        protected void notifyOverrides() {
            
            directory.refreshOverrideAndInvoker(Collections.emptyList());
        }
    }
    private static class ConsumerConfigurationListener extends AbstractConfiguratorListener {