{"record":{"id":"19111ec22d38de74","repo":"redis/jedis","slug":"cannot-open-redis-connection-due-invalid-uri-s-19111e","errorCode":null,"errorMessage":"Cannot open Redis connection due invalid URI. %s","messagePattern":"Cannot open Redis connection due invalid URI\\. (.+?)","errorType":"exception","errorClass":"InvalidURIException","httpStatus":null,"severity":"error","filePath":"src/main/java/redis/clients/jedis/JedisFactory.java","lineNumber":161,"sourceCode":"  }\n\n  protected JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,\n      final String clientName) {\n    this(uri, connectionTimeout, soTimeout, clientName, null, null, null);\n  }\n\n  protected JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,\n      final String clientName, final SSLSocketFactory sslSocketFactory,\n      final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {\n    this(uri, connectionTimeout, soTimeout, 0, clientName, sslSocketFactory, sslParameters,\n        hostnameVerifier);\n  }\n\n  protected JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,\n      final int infiniteSoTimeout, final String clientName, final SSLSocketFactory sslSocketFactory,\n      final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {\n    if (!JedisURIHelper.isValid(uri)) {\n      throw new InvalidURIException(\n          String.format(\"Cannot open Redis connection due invalid URI. %s\", uri.toString()));\n    }\n    this.clientConfig = legacyConfigBuilderWithoutProtocolNegotiation().connectionTimeoutMillis(connectionTimeout)\n        .socketTimeoutMillis(soTimeout).blockingSocketTimeoutMillis(infiniteSoTimeout)\n        .user(JedisURIHelper.getUser(uri)).password(JedisURIHelper.getPassword(uri))\n        .database(JedisURIHelper.getDBIndex(uri)).clientName(clientName)\n        .protocol(JedisURIHelper.getRedisProtocol(uri)).ssl(JedisURIHelper.isRedisSSLScheme(uri))\n        .sslSocketFactory(sslSocketFactory).sslParameters(sslParameters)\n        .hostnameVerifier(hostnameVerifier).build();\n    this.jedisSocketFactory = new DefaultJedisSocketFactory(\n        new HostAndPort(uri.getHost(), uri.getPort()), this.clientConfig);\n  }\n\n  void setHostAndPort(final HostAndPort hostAndPort) {\n    if (!(jedisSocketFactory instanceof DefaultJedisSocketFactory)) {\n      throw new IllegalStateException(\"setHostAndPort method has limited capability.\");\n    }\n    ((DefaultJedisSocketFactory) jedisSocketFactory).updateHostAndPort(hostAndPort);","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/redis/jedis/blob/6dac31d4c224fb3257c216f3985340c6f500cdcb/src/main/java/redis/clients/jedis/JedisFactory.java#L143-L179","documentation":"Thrown in the JedisFactory URI constructor when the supplied URI cannot be converted to a valid host/port Redis connection — the URI is malformed, uses an unsupported scheme, or lacks a resolvable host. It is a fail-fast configuration guard before the pool creates any connections.","triggerScenarios":"Thrown at src/main/java/redis/clients/jedis/JedisFactory.java:161 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a well-formed URI such as redis://[:password@]host:port[/database] or rediss:// for TLS","Validate the URI string before passing it (URI.create / new URI) to catch syntax errors","Pass host/port parameters explicitly instead of a URI if the endpoint is assembled dynamically"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6dac31d4c224fb3257c216f3985340c6f500cdcb","analyzedAt":"2026-09-08T04:55:01.204Z","contentChangedAt":"2026-09-08T04:55:01.204Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}