{"record":{"id":"5d9cc271f6e0d1c8","repo":"quarkusio/quarkus","slug":"impossible-to-register-service-missing-required","errorCode":null,"errorMessage":"Impossible to register service. Missing required 'type' for the following services: ${services}","messagePattern":"Impossible to register service\\. Missing required 'type' for the following services: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/smallrye-stork/runtime/src/main/java/io/quarkus/stork/StorkRegistrarConfigRecorder.java","lineNumber":85,"sourceCode":"        } else {\n            failOnMissingRegistrarTypesForMultipleRegistrars(registrationConfigs);\n        }\n    }\n\n    private static void failOnMissingRegistrarTypesForMultipleRegistrars(List<ServiceConfig> registrationConfigs) {\n        List<String> servicesWithMissingType = new ArrayList<>();\n        for (ServiceConfig registrationConfig : registrationConfigs) {\n            var enabled = Boolean\n                    .parseBoolean(registrationConfig.serviceRegistrar().parameters().getOrDefault(\"enabled\", \"true\"));\n            if (enabled && registrationConfig.serviceRegistrar().type().isBlank()) {\n                servicesWithMissingType.add(registrationConfig.serviceName());\n                LOGGER.info(\"Missing 'type' for service '\" + registrationConfig.serviceName()\n                        + \"'. This may lead to a runtime error.\");\n            }\n\n        }\n        if (!servicesWithMissingType.isEmpty()) {\n            throw new IllegalArgumentException(\n                    \"Impossible to register service. Missing required 'type' for the following services: \" +\n                            String.join(\", \", servicesWithMissingType));\n        }\n    }\n\n}\n","sourceCodeStart":67,"sourceCodeEnd":92,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/smallrye-stork/runtime/src/main/java/io/quarkus/stork/StorkRegistrarConfigRecorder.java#L67-L92","documentation":"StorkRegistrarConfigRecorder.setupServiceRegistrarConfig collects every service whose registration config lacks a 'type'. If any are missing, it aggregates the service names and throws IllegalArgumentException listing them, because Stork cannot instantiate service registrars without knowing the target registry implementation.","triggerScenarios":"Multiple quarkus.stork.<service>.service-registration entries exist but one or more omit quarkus.stork.<service>.service-registration.type; setupServiceRegistrarConfig runs at startup and fails listing all offending service names.","commonSituations":"Bulk-editing application.properties and dropping a type line for one of several registered services; per-environment config files where only prod defines types; a typo like service-registartion.type that Quarkus silently ignores; adding a new service entry and forgetting its type.","solutions":["Add quarkus.stork.<service>.service-registration.type for every service named in the error message (comma-separated list).","Diff your active config profile (application-%prod.properties etc.) — the missing key may only be absent in the failing profile.","Check for key typos; unknown properties are ignored so a misspelled 'type' key behaves exactly like a missing one."],"exampleFix":"// before (application.properties)\nquarkus.stork.orders.service-registration.type=consul\nquarkus.stork.billing.service-registration.address=billing-svc\n\n// after\nquarkus.stork.orders.service-registration.type=consul\nquarkus.stork.billing.service-registration.type=eureka\nquarkus.stork.billing.service-registration.address=billing-svc","handlingStrategy":"validation","validationCode":"// Before startup, verify each configured stork service declares a type\n// quarkus.stork.<service>.service-registration.type must exist for every\n// service listed under quarkus.stork.*","typeGuard":null,"tryCatchPattern":"try {\n    recorder.setupServiceRegistrarConfig(...);\n} catch (IllegalArgumentException e) {\n    LOG.error(\"Stork registrar config incomplete: \" + e.getMessage());\n}","preventionTips":["Keep all stork service entries in the same config file section so none is missed","Watch for typos in the type key — unknown properties fail silently","Diff per-profile config files when a service works in dev but fails in prod"],"tags":["quarkus","stork","configuration","service-registration","startup"],"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"}