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

### Environment

* Dubbo version: 2.7.5
* Zookeeper version: 3.4.14
* Operating System version: macos
* Java version: 1.8

### Steps to reproduce this issue

1. 按官方文档搭建provider，两种方式：annotation/xml
2. 分别配置

```xml
    <dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>
```

```java
        @Bean
        public MetadataReportConfig metadataReportConfig() {
            MetadataReportConfig metadataReportConfig = new MetadataReportConfig();
            metadataReportConfig.setAddress("zookeeper://127.0.0.1:2181");
            return metadataReportConfig;
        }
```

3. 应用正常启动
4. Consumer端正常调用
4. 观察Zookeeper节点数据，元数据节点/dubbo/metadata 未创建

### Expected Result
元数据正常上报

### Actual Result

元数据节点在Zookeeper上未创建，元数据未上报

> 将dubbo版本号更改为2.7.4.1、2.7.3，代码或配置未改动，元数据正常上报

}
            checkInterfaceAndMethods(interfaceClass, getMethods());
        }
        //
        serviceMetadata.setVersion(version);
        serviceMetadata.setGroup(group);
        serviceMetadata.setDefaultGroup(group);
        serviceMetadata.setServiceType(getActualInterface());
        serviceMetadata.setServiceInterfaceName(interfaceName);
        // 
        serviceMetadata.setServiceKey(URL.buildKey(interfaceName, group, version));
        ServiceRepository repository = ApplicationModel.getServiceRepository();
        ServiceDescriptor serviceDescriptor = repository.registerService(interfaceClass);
        repository.registerConsumer(
                serviceMetadata.getServiceKey(),
                serviceDescriptor,
                this,
                null,
                serviceMetadata);
        resolveFile();
        ConfigValidationUtils.validateReferenceConfig(this);
        postProcessConfig();
    }
    /**
     * Figure out should refer the service in the same JVM from configurations. The default behavior is true
     * 1. if injvm is specified, then use it
     * 2. then if a url is specified, then assume it's a remote call
     * 3. otherwise, check scope parameter
     * 4. if scope is not specified but the target service is provided in the same JVM, then prefer to make the local
     * call, which is the default behavior