From 752785b24a73e9fa0f383fd634bb58821ac447cf Mon Sep 17 00:00:00 2001 From: sacOO7 Date: Fri, 30 Jun 2023 22:16:54 +0530 Subject: [PATCH 1/4] Updated connectionStateTtl from 60 seconds to 120 seconds --- lib/src/main/java/io/ably/lib/transport/Defaults.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/java/io/ably/lib/transport/Defaults.java b/lib/src/main/java/io/ably/lib/transport/Defaults.java index d7627939d..b70fd2d67 100644 --- a/lib/src/main/java/io/ably/lib/transport/Defaults.java +++ b/lib/src/main/java/io/ably/lib/transport/Defaults.java @@ -49,7 +49,7 @@ public class Defaults { /* CD2h (but no default in the spec) */ public static long maxIdleInterval = 20000L; /* DF1a */ - public static long connectionStateTtl = 60000L; + public static long connectionStateTtl = 120000L; public static final ITransport.Factory TRANSPORT = new WebSocketTransport.Factory(); public static final int HTTP_MAX_RETRY_COUNT = 3; From 69c5dfd71d8f0b59204b65477c7d19dfa6e2d975 Mon Sep 17 00:00:00 2001 From: sacOO7 Date: Fri, 30 Jun 2023 22:38:09 +0530 Subject: [PATCH 2/4] Added suspendedRetryTimeout as a part of clientOptions --- .../java/io/ably/lib/transport/ConnectionManager.java | 2 +- lib/src/main/java/io/ably/lib/transport/Defaults.java | 2 ++ lib/src/main/java/io/ably/lib/types/ClientOptions.java | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/src/main/java/io/ably/lib/transport/ConnectionManager.java b/lib/src/main/java/io/ably/lib/transport/ConnectionManager.java index cb442abe2..4a6b9f674 100644 --- a/lib/src/main/java/io/ably/lib/transport/ConnectionManager.java +++ b/lib/src/main/java/io/ably/lib/transport/ConnectionManager.java @@ -337,7 +337,7 @@ void enact(StateIndication stateIndication, ConnectionStateChange change) { class Suspended extends State { Suspended() { - super(ConnectionState.suspended, false, false, false, Defaults.connectionStateTtl, REASON_SUSPENDED); + super(ConnectionState.suspended, false, false, false, ably.options.suspendedRetryTimeout, REASON_SUSPENDED); } @Override diff --git a/lib/src/main/java/io/ably/lib/transport/Defaults.java b/lib/src/main/java/io/ably/lib/transport/Defaults.java index b70fd2d67..e2e68e4cc 100644 --- a/lib/src/main/java/io/ably/lib/transport/Defaults.java +++ b/lib/src/main/java/io/ably/lib/transport/Defaults.java @@ -44,6 +44,8 @@ public class Defaults { public static int TIMEOUT_HTTP_REQUEST = 15000; /* DF1b */ public static long realtimeRequestTimeout = 10000L; + /* TO3l2 */ + public static long suspendedRetryTimeout = 30000L; /* TO3l10 */ public static long fallbackRetryTimeout = 10*60*1000L; /* CD2h (but no default in the spec) */ diff --git a/lib/src/main/java/io/ably/lib/types/ClientOptions.java b/lib/src/main/java/io/ably/lib/types/ClientOptions.java index 70717d6c6..e8c3e332f 100644 --- a/lib/src/main/java/io/ably/lib/types/ClientOptions.java +++ b/lib/src/main/java/io/ably/lib/types/ClientOptions.java @@ -216,6 +216,15 @@ public ClientOptions(String key) throws AblyException { */ public String[] fallbackHosts; + /** + * This is a timeout when the connection enters the suspendedState. + * Client will try to connect indefinitely in thi state. + * The default is 30 seconds. + *

+ * Spec: RTN14d, TO3l2 + */ + public long suspendedRetryTimeout = Defaults.suspendedRetryTimeout; + /** * An array of fallback hosts to be used in the case of an error necessitating the use of an alternative host. * If you have been provided a set of custom fallback hosts by Ably, please specify them here. From 515b7000f05e5277d5d4da0ac262d39a9574add5 Mon Sep 17 00:00:00 2001 From: sacOO7 Date: Fri, 30 Jun 2023 22:39:54 +0530 Subject: [PATCH 3/4] Updated doc comment for suspendedRetryTimeout --- lib/src/main/java/io/ably/lib/types/ClientOptions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/java/io/ably/lib/types/ClientOptions.java b/lib/src/main/java/io/ably/lib/types/ClientOptions.java index e8c3e332f..b81466c1b 100644 --- a/lib/src/main/java/io/ably/lib/types/ClientOptions.java +++ b/lib/src/main/java/io/ably/lib/types/ClientOptions.java @@ -218,7 +218,7 @@ public ClientOptions(String key) throws AblyException { /** * This is a timeout when the connection enters the suspendedState. - * Client will try to connect indefinitely in thi state. + * Client will try to connect indefinitely till state changes to connected. * The default is 30 seconds. *

* Spec: RTN14d, TO3l2 From 7ea2aefcb5b234bfcac05addecb87147e3474783 Mon Sep 17 00:00:00 2001 From: sacOO7 Date: Fri, 30 Jun 2023 23:07:49 +0530 Subject: [PATCH 4/4] Added a clientOption for httpMaxRetryDuration --- lib/src/main/java/io/ably/lib/transport/Defaults.java | 3 +++ lib/src/main/java/io/ably/lib/types/ClientOptions.java | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/lib/src/main/java/io/ably/lib/transport/Defaults.java b/lib/src/main/java/io/ably/lib/transport/Defaults.java index e2e68e4cc..9d274e572 100644 --- a/lib/src/main/java/io/ably/lib/transport/Defaults.java +++ b/lib/src/main/java/io/ably/lib/transport/Defaults.java @@ -42,6 +42,9 @@ public class Defaults { public static int TIMEOUT_HTTP_OPEN = 4000; /* TO3l4 */ public static int TIMEOUT_HTTP_REQUEST = 15000; + /* TO3l6 */ + public static int httpMaxRetryDuration = 15000; + /* DF1b */ public static long realtimeRequestTimeout = 10000L; /* TO3l2 */ diff --git a/lib/src/main/java/io/ably/lib/types/ClientOptions.java b/lib/src/main/java/io/ably/lib/types/ClientOptions.java index b81466c1b..65c3cb688 100644 --- a/lib/src/main/java/io/ably/lib/types/ClientOptions.java +++ b/lib/src/main/java/io/ably/lib/types/ClientOptions.java @@ -188,6 +188,13 @@ public ClientOptions(String key) throws AblyException { */ public int httpRequestTimeout = Defaults.TIMEOUT_HTTP_REQUEST; + /** + * Denotes elapsed time in which fallback host retries for HTTP requests will be attempted. + * Default is 15 seconds. + * Spec: TO3l6 + */ + public int httpMaxRetryDuration = Defaults.httpMaxRetryDuration; + /** * The maximum number of fallback hosts to use as a fallback when an HTTP request to the primary host * is unreachable or indicates that it is unserviceable.