{"record":{"id":"66a515ad031af122","repo":"quarkusio/quarkus","slug":"eureka-configuration-is-required","errorCode":null,"errorMessage":"Eureka configuration is required","messagePattern":"Eureka configuration is required","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/spring-cloud-config-client/runtime/src/main/java/io/quarkus/spring/cloud/config/client/runtime/VertxSpringCloudConfigGateway.java","lineNumber":76,"sourceCode":"        this.configServerBaseUrlProvider = createConfigServerProvider(config);\n    }\n\n    private ConfigServerBaseUrlProvider createConfigServerProvider(SpringCloudConfigClientConfig config) {\n        if (!config.discovery().isPresent() || (!config.discovery().get().enabled())) {\n            return new DirectConfigServerBaseUrlProvider(config);\n        }\n        DiscoveryService discoveryService = createDiscoveryService(config.discovery().get());\n        return new DiscoveryConfigServerBaseUrlProvider(discoveryService, config);\n    }\n\n    private DiscoveryService createDiscoveryService(SpringCloudConfigClientConfig.DiscoveryConfig config) {\n        EurekaClient eurekaClient = createEurekaClient(config.eurekaConfig().get());\n        return new DiscoveryService(eurekaClient);\n    }\n\n    private EurekaClient createEurekaClient(SpringCloudConfigClientConfig.DiscoveryConfig.EurekaConfig config) {\n        if (config == null) {\n            throw new IllegalArgumentException(\"Eureka configuration is required\");\n        }\n        Duration fetchInterval = config.registryFetchIntervalSeconds();\n        EurekaResponseMapper responseMapper = new EurekaResponseMapper();\n        RandomEurekaInstanceSelector instanceSelector = new RandomEurekaInstanceSelector();\n\n        return new EurekaClient(\n                webClient,\n                fetchInterval,\n                responseMapper,\n                instanceSelector);\n    }\n\n    private Vertx createVertxInstance() {\n        // We must disable the async DNS resolver as it can cause issues when resolving the Vault instance.\n        // This is done using the DISABLE_DNS_RESOLVER system property.\n        // The DNS resolver used by vert.x is configured during the (synchronous) initialization.\n        // So, we just need to disable the async resolver around the Vert.x instance creation.\n        try (var resettableSystemProperties = ResettableSystemProperties.of(","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/spring-cloud-config-client/runtime/src/main/java/io/quarkus/spring/cloud/config/client/runtime/VertxSpringCloudConfigGateway.java#L58-L94","documentation":"When quarkus.spring-cloud-config.discovery-enabled=true, VertxSpringCloudConfigGateway resolves the Config Server through Eureka. createEurekaClient asserts that the EurekaConfig is present and throws 'Eureka configuration is required' if it is null, meaning discovery was requested but no Eureka settings were provided.","triggerScenarios":"Enabling quarkus.spring-cloud-config.discovery-enabled=true without configuring quarkus.spring-cloud-config.eureka.* properties (eureka host, port, service-url); Optional config resolving to empty so config.eurekaConfig().get() yields null upstream of the null check.","commonSituations":"Migrating Spring apps where discovery was auto-configured via Eureka defaults; partial config where eureka.enabled is set but eureka.service-url is missing.","solutions":["Provide the Eureka configuration: quarkus.spring-cloud-config.eureka.enabled=true and quarkus.spring-cloud-config.eureka.service-url (and zones if needed)","If the Config Server URL is known statically, disable discovery with quarkus.spring-cloud-config.discovery-enabled=false and set quarkus.spring-cloud-config.url directly"],"exampleFix":"// before\nquarkus.spring-cloud-config.discovery-enabled=true\n# no eureka config\n\n// after\nquarkus.spring-cloud-config.discovery-enabled=true\nquarkus.spring-cloud-config.eureka.enabled=true\nquarkus.spring-cloud-config.eureka.service-url=http://eureka:8761/eureka","handlingStrategy":"validation","validationCode":"if (discoveryEnabled && (eurekaServiceUrl == null || eurekaServiceUrl.isEmpty())) {\n    throw new IllegalStateException(\"eureka.service-url required when discovery-enabled=true\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Whenever enabling discovery-enabled, also set the eureka.* block","Verify eureka registration from the app's network","Prefer static url when Eureka is not required"],"tags":["quarkus","spring-cloud-config","eureka","discovery","configuration"],"backgroundTag":"missing-config-property","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}