- [ ] 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: 3.0.3-SNAPSHOT
* Operating System version: macos
* Java version: 1.8

### Steps to reproduce this issue

1.  provider export multi protocol 
```java
class ApiMigrationBothProvider {

    public static void main(String[] args) {

        ServiceConfig<IWrapperGreeter> service = new ServiceConfig<>();
        service.setInterface(IWrapperGreeter.class);
        service.setRef(new IGreeter2Impl());

        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
        bootstrap.application(new ApplicationConfig("demo-migration-both-provider"))
                .registry(new RegistryConfig(TriSampleConstants.ZK_ADDRESS))
                .protocol(new ProtocolConfig(CommonConstants.TRIPLE, TriSampleConstants.SERVER_PORT))
                .protocol(new ProtocolConfig(CommonConstants.DUBBO, TriSampleConstants.DEFAULT_DUBBO_PORT))
                .service(service)
                .start()
                .await();

    }
}
```


2. run provider

## reason

![image](https://user-images.githubusercontent.com/20179425/132439980-d5916e9d-073d-425a-9171-fe81a87a53f3.png)
 
when the second protocol export, contains always true 



Pls. provide [GitHub address] to reproduce this issue.

https://github.com/apache/dubbo-samples/pull/356

### Expected Result

everything is ok

### Actual Result

throw exception

If there is an exception, please attach the exception trace:

```
java.lang.RuntimeException
	at org.apache.dubbo.registry.client.metadata.MetadataServiceNameMapping.map(MetadataServiceNameMapping.java:88)
	at org.apache.dubbo.config.ServiceConfig.lambda$exported$1(ServiceConfig.java:270)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at org.apache.dubbo.config.ServiceConfig.exported(ServiceConfig.java:266)
	at org.apache.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:371)
	at org.apache.dubbo.config.ServiceConfig.export(ServiceConfig.java:244)
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.exportServices(DubboBootstrap.java:1476)
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.doStart(DubboBootstrap.java:1190)
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.start(DubboBootstrap.java:1166)
	at org.apache.dubbo.sample.tri.migration.ApiMigrationBothProvider.main(ApiMigrationBothProvider.java:44)
```

}
            String registryCluster = getRegistryCluster(url);
            MetadataReport metadataReport = metadataReportInstance.getMetadataReport(registryCluster);
            String appName = applicationModel.getApplicationName();
            if (metadataReport.registerServiceAppMapping(serviceInterface, appName, url)) {
                
                return true;
            }
            int currentRetryTimes = 1;
            boolean succeeded = false;
            String newConfigContent = appName;
            do {
                ConfigItem configItem = metadataReport.getConfigItem(serviceInterface, DEFAULT_MAPPING_GROUP);
                String oldConfigContent = configItem.getContent();
                if (StringUtils.isNotEmpty(oldConfigContent)) {
                    boolean contains = StringUtils.isContains(oldConfigContent, appName);
                    if (contains) {
                        break;
                    }
                    newConfigContent = oldConfigContent + COMMA_SEPARATOR + appName;
                }
                succeeded = metadataReport.registerServiceAppMapping(serviceInterface, DEFAULT_MAPPING_GROUP, newConfigContent, configItem.getTicket());
            } while (!succeeded && currentRetryTimes++ <= CAS_RETRY_TIMES);
            if (!succeeded) {
            throw new RuntimeException();
        }
        return true;
    }
    @Override
    public Set<String> get(URL url) {