{"record":{"id":"ad8fe49eeede981c","repo":"apache/dubbo","slug":"no-registry-config-found-or-it-s-not-a-valid-confi","errorCode":null,"errorMessage":"No registry config found or it's not a valid config! The registry config is: <registryConfig>","messagePattern":"No registry config found or it's not a valid config! The registry config is: <registryConfig>","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java","lineNumber":285,"sourceCode":"        }\n        if (CollectionUtils.isNotEmpty(this.registries)) {\n            this.registries.forEach(registryConfig -> {\n                if (registryConfig.getScopeModel() != applicationModel) {\n                    registryConfig.setScopeModel(applicationModel);\n                }\n            });\n        }\n    }\n\n    /**\n     * Check whether the registry config is exists, and then conversion it to {@link RegistryConfig}\n     */\n    protected void checkRegistry() {\n        convertRegistryIdsToRegistries();\n\n        for (RegistryConfig registryConfig : registries) {\n            if (!registryConfig.isValid()) {\n                throw new IllegalStateException(\"No registry config found or it's not a valid config! \"\n                        + \"The registry config is: \" + registryConfig);\n            }\n        }\n    }\n\n    public static void appendRuntimeParameters(Map<String, String> map) {\n        map.put(DUBBO_VERSION_KEY, Version.getProtocolVersion());\n        map.put(RELEASE_KEY, Version.getVersion());\n        map.put(TIMESTAMP_KEY, String.valueOf(System.currentTimeMillis()));\n        if (ConfigUtils.getPid() > 0) {\n            map.put(PID_KEY, String.valueOf(ConfigUtils.getPid()));\n        }\n    }\n\n    /**\n     * To obtain the method list in the port, use reflection when in native mode and javassist otherwise.\n     *\n     * @param interfaceClass","sourceCodeStart":267,"sourceCodeEnd":303,"githubUrl":"https://github.com/apache/dubbo/blob/3a3043227f5571d25eb2889de5bca22f2914843b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java#L267-L303","documentation":"Thrown by AbstractInterfaceConfig.checkRegistry(): after resolving registry IDs to RegistryConfig objects, at least one registry config reports isValid()==false. A registry is invalid when it lacks the required attributes (notably a usable address). This blocks service export/reference because there is no usable registry to register against.","triggerScenarios":"checkRegistry() iterates the resolved registries; one has no address (or other required field), so isValid() is false. Triggered during service export or reference subscription when a registry is configured but incomplete.","commonSituations":"Registry address property not set or placeholder unresolved (e.g. dubbo.registry.address empty). A RegistryConfig bean created programmatically without setAddress(). Multiple registries where one is a stub/placeholder. Migration where the registry address moved to a new property key.","solutions":["Set a valid registry address, e.g. dubbo.registry.address=nacos://127.0.0.1:8848 or zookeeper://127.0.0.1:2181.","If configuring programmatically, call registryConfig.setAddress(...) before export/reference.","Remove registry configs that are placeholders and not intended to be used.","Verify the registry address placeholder (${registry.address}) resolves at runtime."],"exampleFix":"// before\nRegistryConfig rc = new RegistryConfig();\nservice.setRegistry(rc); // no address -> invalid\n// after\nRegistryConfig rc = new RegistryConfig();\nrc.setAddress(\"zookeeper://127.0.0.1:2181\");\nservice.setRegistry(rc);","handlingStrategy":"validation","validationCode":"void assertRegistryValid(RegistryConfig rc) {\n    if (rc == null || rc.getAddress() == null || rc.getAddress().trim().isEmpty()) {\n        throw new IllegalStateException(\"registry config missing address: \" + rc);\n    }\n}\n// call before service.export() / reference reference()","typeGuard":"boolean isRegistryConfigValid(RegistryConfig rc) {\n    return rc != null && rc.isValid();\n}","tryCatchPattern":"try {\n    serviceConfig.export();\n} catch (IllegalStateException e) {\n    if (e.getMessage().startsWith(\"No registry config found or it's not a valid config\")) {\n        // set dubbo.registry.address or setAddress on the RegistryConfig\n    }\n    throw e;\n}","preventionTips":["Always set dubbo.registry.address to a valid protocol://host[:port].","Validate registry configs in a startup self-check.","Ensure registry-address placeholders resolve at runtime."],"tags":["config","registry","startup","export"],"backgroundTag":null,"analyzedSha":"3a3043227f5571d25eb2889de5bca22f2914843b","analyzedAt":"2026-08-14T00:43:19.853Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}