{"record":{"id":"7803fc3e06a04154","repo":"apache/skywalking","slug":"no-host-setting","errorCode":null,"errorMessage":"No host setting.","messagePattern":"No host setting\\.","errorType":"exception","errorClass":"ModuleStartException","httpStatus":null,"severity":"critical","filePath":"oap-server/server-configuration/grpc-configuration-sync/src/main/java/org/apache/skywalking/oap/server/configuration/grpc/GRPCConfigurationProvider.java","lineNumber":57,"sourceCode":"    @Override\n    public ConfigCreator newConfigCreator() {\n        return new ConfigCreator<RemoteEndpointSettings>() {\n            @Override\n            public Class type() {\n                return RemoteEndpointSettings.class;\n            }\n\n            @Override\n            public void onInitialized(final RemoteEndpointSettings initialized) {\n                settings = initialized;\n            }\n        };\n    }\n\n    @Override\n    protected ConfigWatcherRegister initConfigReader() throws ModuleStartException {\n        if (Strings.isNullOrEmpty(settings.getHost())) {\n            throw new ModuleStartException(\"No host setting.\");\n        }\n        if (settings.getPort() < 1) {\n            throw new ModuleStartException(\"No port setting.\");\n        }\n\n        return new GRPCConfigWatcherRegister(settings);\n    }\n}\n","sourceCodeStart":39,"sourceCodeEnd":66,"githubUrl":"https://github.com/apache/skywalking/blob/102af09b4a56064e22050dded10e2c52e490d040/oap-server/server-configuration/grpc-configuration-sync/src/main/java/org/apache/skywalking/oap/server/configuration/grpc/GRPCConfigurationProvider.java#L39-L66","documentation":"ModuleStartException thrown by the gRPC configuration-sync provider during OAP startup when the target 'host' is null or empty. This provider makes the OAP act as a configuration client fetching dynamic config from a remote gRPC endpoint, and it refuses to start without a host to connect to. Fail-fast validation in initConfigReader() before constructing GRPCConfigWatcherRegister.","triggerScenarios":"Setting configuration.selector to grpc in application.yml while the host entry under the grpc block is missing or empty. The settings object is populated from the module config; Strings.isNullOrEmpty(settings.getHost()) triggers the throw.","commonSituations":"Switching the config center from apollo/consul/nacos to grpc and forgetting the host field; env-var substitution for the host resolving to empty; wrong YAML nesting under the grpc sub-block.","solutions":["Set host under configuration.grpc in application.yml, e.g. host: config-server.internal","Verify the selector line matches the block name (grpc) and indentation is correct","If using ${SW_GRPC_HOST}, confirm the environment variable is set in the container/service definition","Restart OAP"],"exampleFix":"# before\nconfiguration:\n  selector: grpc\n  grpc:\n    port: 9555\n\n# after\nconfiguration:\n  selector: grpc\n  grpc:\n    host: config-server.internal\n    port: 9555","handlingStrategy":"validation","validationCode":"String host = System.getenv().getOrDefault(\"SW_CONFIGURATION_GRPC_HOST\", \"\");\nif (host == null || host.trim().isEmpty()) {\n    throw new IllegalStateException(\"configuration.grpc host is required when selector=grpc\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add a CI check that, whenever configuration.selector is changed in application.yml, the matching sub-block contains all required keys","Validate rendered configs with a schema/ascribe check in the deploy pipeline","Smoke-test config-center connectivity from the OAP container before the full start"],"tags":["grpc","configuration-sync","startup","oap-server"],"backgroundTag":null,"analyzedSha":"102af09b4a56064e22050dded10e2c52e490d040","analyzedAt":"2026-08-14T10:47:52.647Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}