[ 
https://issues.apache.org/jira/browse/IGNITE-27214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Tupitsyn updated IGNITE-27214:
------------------------------------
    Fix Version/s: 3.2

> Java Client: Connection to the cluster is not established if the first node 
> in the list is unavailable and RetryPolicy is not set.
> ----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-27214
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27214
>             Project: Ignite
>          Issue Type: Improvement
>          Components: thin clients ai3
>            Reporter: Pavel Pereslegin
>            Assignee: Pavel Tupitsyn
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.2
>
>
> When establishing an initial connection to a cluster, if the first node in 
> the list is unavailable and {{RetryPolicy}} is not specified, the client does 
> not attempt to connect to other nodes.
> It seems we should not rely on {{RetryPolicy}} when initially connecting to a 
> cluster, and even if it is not set, we should iterate through all nodes from 
> the list.
> Reproducer
> {code:java}
> @Test
> void initialConnectionToClusterFirstNodeIsDownNoRetryPolicy() {
>     cluster.startAndInit(3, new int[]{2});
>     String[] addresses = {
>             "127.0.0.1:10804", // Stopped node.
>             "127.0.0.1:10800" // Alive node.
>     };
>     try (IgniteClient ignored = IgniteClient.builder()
>             // works fine
>             // .retryPolicy(new RetryReadPolicy().retryLimit(1))
>             // not working
>             .retryPolicy(null)
>             .addresses(addresses).build()) {
>         // No-op.
>     }
> }
> {code}
> Fails with:
> {noformat}
> org.apache.ignite.client.IgniteClientConnectionException: IGN-CLIENT-1 Client 
> failed to connect: Connection refused: /127.0.0.1:10804 
> [endpoint=127.0.0.1:10804]
>  TraceId:3069d739
>       at 
> java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
>       at 
> org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:952)
>       at 
> org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:886)
>       at 
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:688)
>       at 
> org.apache.ignite.internal.util.ViewUtils.copyExceptionWithCauseIfPossible(ViewUtils.java:91)
>       at 
> org.apache.ignite.internal.util.ViewUtils.ensurePublicException(ViewUtils.java:71)
>       at org.apache.ignite.internal.util.ViewUtils.sync(ViewUtils.java:54)
>       at 
> org.apache.ignite.client.IgniteClient$Builder.build(IgniteClient.java:415)
>       at 
> org.apache.ignite.internal.runner.app.client.ItThinConnectionTest.initialConnectionToClusterFirstNodeIsDownNoRetryPolicy(ItThinConnectionTest.java:30)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>       at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
>       at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
> Caused by: org.apache.ignite.client.IgniteClientConnectionException: 
> IGN-CLIENT-1 Client failed to connect: Connection refused: /127.0.0.1:10804 
> [endpoint=127.0.0.1:10804] TraceId:3069d739
>       at 
> org.apache.ignite.internal.client.io.netty.NettyClientConnectionMultiplexer.lambda$openAsync$1(NettyClientConnectionMultiplexer.java:193)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to