{"record":{"id":"0f682b629e2be54f","repo":"eclipse-vertx/vert.x","slug":"default-http-client-version-protocolversion-doe","errorCode":null,"errorMessage":"Default HTTP client version ${protocolVersion} does not belong to the ALPN protocol version list ${versions}","messagePattern":"Default HTTP client version (.+?) does not belong to the ALPN protocol version list (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"vertx-core/src/main/java/io/vertx/core/http/HttpClientConfig.java","lineNumber":155,"sourceCode":"    redirectConfig.setMaxBufferedSize(options.getMaxRedirectBufferedSize());\n    if (options.getCrossOriginRedirectBlockedHeaders() != null) {\n      redirectConfig.setCrossOriginBlockedHeaders(options.getCrossOriginRedirectBlockedHeaders());\n    }\n    if (options.getSameOriginRedirectBlockedHeaders() != null) {\n      redirectConfig.setSameOriginBlockedHeaders(options.getSameOriginRedirectBlockedHeaders());\n    }\n\n    List<HttpVersion> versions;\n    ClientSSLOptions sslOptions = options.getSslOptions();\n    if (sslOptions == null || !sslOptions.isUseAlpn() || sslOptions.getApplicationLayerProtocols().isEmpty()) {\n      versions = new ArrayList<>(toSupportedVersion(options.getProtocolVersion()));\n    } else {\n      versions = sslOptions.getApplicationLayerProtocols()\n        .stream()\n        .map(HttpVersion::fromAlpnName)\n        .collect(Collectors.toList());\n      if (!versions.contains(options.getProtocolVersion())) {\n        throw new IllegalArgumentException(\"Default HTTP client version \" + options.getProtocolVersion() +\n          \" does not belong to the ALPN protocol version list \" + versions);\n      }\n    }\n\n    this.tcpConfig = new TcpClientConfig(options);\n    this.quicConfig = defaultQuicConfig();\n    this.ssl = options.isSsl();\n    this.versions = versions;\n    this.http1Config = options.getHttp1Config();\n    this.http2Config = options.getHttp2Config();\n    this.http3Config = new Http3ClientConfig();\n    this.verifyHost = options.isVerifyHost();\n    this.decompressionEnabled = options.isDecompressionSupported();\n    this.defaultHost = options.getDefaultHost();\n    this.defaultPort = options.getDefaultPort();\n    this.redirectConfig = redirectConfig;\n    this.observabilityConfig = observabilityConfig;\n    this.shared = options.isShared();","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/http/HttpClientConfig.java#L137-L173","documentation":"Consistency check while converting HttpClientOptions into HttpClientConfig: the configured default protocol version is not present in the ALPN application protocol list derived from the enabled SSL/ALPN versions. The message reports both the default version and the ALPN list; the mismatched configuration input is options.protocolVersion versus the ALPN-enabled versions.","triggerScenarios":"Thrown at vertx-core/src/main/java/io/vertx/core/http/HttpClientConfig.java:155 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Enable ALPN versions that include the configured default protocol version","Or set a default protocolVersion consistent with the ALPN list","Disable ALPN if it is not needed"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fb308bd8c3f12c79f4ae89bef67fadf6c80d036e","analyzedAt":"2026-09-06T11:37:12.241Z","contentChangedAt":"2026-09-06T11:37:12.241Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}