Skip to content

Duplicate Config found for ApplicationConfig #4391

@yintiefu

Description

@yintiefu

Environment

  • Dubbo version: 2.7.2
  • Java version: 1.8

Steps to reproduce this issue

一个API网关的应用,即是服务提供者,也是消费者,消费是dubbo泛化调用,从2.6 升级到2.7.2之后,服务启动报错 Duplicate Config found for ApplicationConfig

       ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("generic-call-consumer");
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://127.0.0.1:2181");
        ReferenceConfig<GenericService> referenceConfig = new ReferenceConfig<>();
        referenceConfig.setInterface("org.apache.dubbo.samples.generic.call.api.HelloService");
        //会报错 
        applicationConfig.setRegistry(registryConfig);
        referenceConfig.setApplication(applicationConfig);
        referenceConfig.setGeneric(true);
        referenceConfig.setAsync(true);
        referenceConfig.setTimeout(7000);

主要原因是 2.7.x之后 referenceConfig.setApplication添加了校验逻辑 checkDuplicate

    public void setApplication(ApplicationConfig application) {
        if (application != null) {
            checkDuplicate(this.application, application);
            this.application = application;
        }
    }
      private void checkDuplicate(AbstractConfig oldOne, AbstractConfig newOne) {
        if (oldOne != null && !oldOne.equals(newOne)) {
            String configName = oldOne.getClass().getSimpleName();
            throw new IllegalStateException("Duplicate Config found for " + configName + ", you 
            should use only one unique " + configName + " for one application.");
        }
    }

针对这种情况要怎么处理?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions