diff --git a/activitytype-cql/pom.xml b/activitytype-cql/pom.xml index a1a06c2ee..47e4bf36c 100644 --- a/activitytype-cql/pom.xml +++ b/activitytype-cql/pom.xml @@ -4,7 +4,7 @@ io.nosqlbench mvn-defaults - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -23,7 +23,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CQLOptions.java b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CQLOptions.java index 996fc8eec..0c729ceef 100644 --- a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CQLOptions.java +++ b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CQLOptions.java @@ -3,6 +3,7 @@ package io.nosqlbench.activitytype.cql.core; import com.datastax.driver.core.*; import com.datastax.driver.core.policies.*; import io.netty.util.HashedWheelTimer; +import io.nosqlbench.engine.api.exceptions.BasicError; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,6 +84,24 @@ public class CQLOptions { return retryPolicy; } + public static ReconnectionPolicy reconnectPolicyFor(String spec) { + if(spec.startsWith("exponential(")){ + String argsString = spec.substring(12); + String[] args = argsString.substring(0, argsString.length() - 1).split("[,;]"); + if (args.length != 2){ + throw new BasicError("Invalid reconnectionpolicy, try reconnectionpolicy=exponential(, )"); + } + long baseDelay = Long.parseLong(args[0]); + long maxDelay = Long.parseLong(args[1]); + return new ExponentialReconnectionPolicy(baseDelay,maxDelay); + }else if(spec.startsWith("constant(")){ + String argsString = spec.substring(9); + long constantDelayMs= Long.parseLong(argsString.substring(0, argsString.length() - 1)); + return new ConstantReconnectionPolicy(constantDelayMs); + } + throw new BasicError("Invalid reconnectionpolicy, try reconnectionpolicy=exponential(, ) or constant()"); + } + public static SocketOptions socketOptionsFor(String spec) { String[] assignments = spec.split("[,;]"); Map values = new HashMap<>(); diff --git a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java index 776d89a24..dc92a23ad 100644 --- a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java +++ b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/CQLSessionCache.java @@ -161,6 +161,15 @@ public class CQLSessionCache implements Shutdownable { .map(CQLOptions::socketOptionsFor) .ifPresent(builder::withSocketOptions); + activityDef.getParams().getOptionalString("reconnectpolicy") + .map(reconnectpolicy-> { + logger.info("reconnectpolicy=>" + reconnectpolicy); + return reconnectpolicy; + }) + .map(CQLOptions::reconnectPolicyFor) + .ifPresent(builder::withReconnectionPolicy); + + activityDef.getParams().getOptionalString("pooling") .map(pooling -> { logger.info("pooling=>" + pooling); diff --git a/activitytype-cql/src/main/resources/cql.md b/activitytype-cql/src/main/resources/cql.md index a49e66788..c715ccebb 100644 --- a/activitytype-cql/src/main/resources/cql.md +++ b/activitytype-cql/src/main/resources/cql.md @@ -66,6 +66,11 @@ activity types. The only option supported for this version is `retrypolicy=logging`, which uses the default retry policy, but with logging added. +- **reconnectpolicy** default: none - Applies a reconnection policy in the driver + Supports either `reconnectpolicy=exponential(minDelayInMs,maxDelayInMs)` or `reconnectpolicy=constant(delayInMs)`. + The driver reconnects using this policy when the entire cluster becomes unavailable. + + - **pooling** default: none - Applies the connection pooling options to the policy. Examples: diff --git a/activitytype-cql/src/test/java/com/datastax/ebdrivers/cql/statements/CQLOptionsTest.java b/activitytype-cql/src/test/java/com/datastax/ebdrivers/cql/statements/CQLOptionsTest.java index 9b6805b72..132e2a082 100644 --- a/activitytype-cql/src/test/java/com/datastax/ebdrivers/cql/statements/CQLOptionsTest.java +++ b/activitytype-cql/src/test/java/com/datastax/ebdrivers/cql/statements/CQLOptionsTest.java @@ -4,6 +4,8 @@ import com.datastax.driver.core.HostDistance; import com.datastax.driver.core.PoolingOptions; import com.datastax.driver.core.SocketOptions; import com.datastax.driver.core.policies.LoadBalancingPolicy; +import com.datastax.driver.core.policies.ReconnectionPolicy; +import com.datastax.driver.core.policies.RetryPolicy; import com.datastax.driver.core.policies.SpeculativeExecutionPolicy; import io.nosqlbench.activitytype.cql.core.CQLOptions; import org.junit.Test; @@ -32,6 +34,13 @@ public class CQLOptionsTest { assertThat(lbp).isNotNull(); } + @Test + public void testReconnectPolicyPatterns() { + ReconnectionPolicy rp = CQLOptions.reconnectPolicyFor("exponential(123,321)"); + rp = CQLOptions.reconnectPolicyFor("constant(123)"); + + } + @Test public void testSocketOptionPatterns() { SocketOptions so = CQLOptions.socketOptionsFor("read_timeout_ms=23423,connect_timeout_ms=2344;keep_alive:true,reuse_address:true;so_linger:323;tcp_no_delay=true;receive_buffer_size:100,send_buffer_size=1000"); diff --git a/activitytype-cqlverify/pom.xml b/activitytype-cqlverify/pom.xml index a4c0e8ceb..8f749dfd5 100644 --- a/activitytype-cqlverify/pom.xml +++ b/activitytype-cqlverify/pom.xml @@ -4,7 +4,7 @@ io.nosqlbench mvn-defaults - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -24,7 +24,7 @@ io.nosqlbench activitytype-cql - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/activitytype-diag/pom.xml b/activitytype-diag/pom.xml index 0e48efe2c..379848935 100644 --- a/activitytype-diag/pom.xml +++ b/activitytype-diag/pom.xml @@ -5,7 +5,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -20,7 +20,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/activitytype-http/pom.xml b/activitytype-http/pom.xml index 39897dafc..104d91f59 100644 --- a/activitytype-http/pom.xml +++ b/activitytype-http/pom.xml @@ -5,7 +5,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -21,7 +21,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/activitytype-stdout/pom.xml b/activitytype-stdout/pom.xml index df2c1de23..30d05440b 100644 --- a/activitytype-stdout/pom.xml +++ b/activitytype-stdout/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -21,7 +21,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/activitytype-tcp/pom.xml b/activitytype-tcp/pom.xml index 7b1906633..2134d5339 100644 --- a/activitytype-tcp/pom.xml +++ b/activitytype-tcp/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -23,13 +23,13 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-stdout - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/docsys/pom.xml b/docsys/pom.xml index b888e187f..731d3f0d7 100644 --- a/docsys/pom.xml +++ b/docsys/pom.xml @@ -9,7 +9,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -18,7 +18,7 @@ io.nosqlbench nb-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT @@ -112,7 +112,7 @@ io.nosqlbench virtdata-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/engine-api/pom.xml b/engine-api/pom.xml index 5ed294a1f..e69a62d79 100644 --- a/engine-api/pom.xml +++ b/engine-api/pom.xml @@ -5,7 +5,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -22,13 +22,13 @@ io.nosqlbench nb-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench virtdata-userlibs - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/engine-cli/pom.xml b/engine-cli/pom.xml index 77ddf018a..daa4e4dd8 100644 --- a/engine-cli/pom.xml +++ b/engine-cli/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -23,7 +23,7 @@ io.nosqlbench engine-core - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT @@ -47,7 +47,7 @@ io.nosqlbench engine-docker - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/engine-core/pom.xml b/engine-core/pom.xml index fec5f5693..93e8814c5 100644 --- a/engine-core/pom.xml +++ b/engine-core/pom.xml @@ -5,7 +5,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -28,7 +28,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/engine-docker/pom.xml b/engine-docker/pom.xml index 58158cc10..58241f061 100644 --- a/engine-docker/pom.xml +++ b/engine-docker/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -77,7 +77,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/engine-docs/pom.xml b/engine-docs/pom.xml index c0173283f..c07fc559e 100644 --- a/engine-docs/pom.xml +++ b/engine-docs/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -28,7 +28,7 @@ io.nosqlbench docsys - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/engine-extensions/pom.xml b/engine-extensions/pom.xml index 216683ad6..bb2cab555 100644 --- a/engine-extensions/pom.xml +++ b/engine-extensions/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -22,7 +22,7 @@ io.nosqlbench engine-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml index 88310dbe5..f5027abd5 100644 --- a/mvn-defaults/pom.xml +++ b/mvn-defaults/pom.xml @@ -3,7 +3,7 @@ io.nosqlbench mvn-defaults - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT pom diff --git a/nb-api/pom.xml b/nb-api/pom.xml index eb2efe4a5..31cc66b49 100644 --- a/nb-api/pom.xml +++ b/nb-api/pom.xml @@ -5,7 +5,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults diff --git a/nb/pom.xml b/nb/pom.xml index 1de364a16..fee2e9e59 100644 --- a/nb/pom.xml +++ b/nb/pom.xml @@ -5,7 +5,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -24,61 +24,61 @@ io.nosqlbench engine-cli - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench engine-docs - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench engine-core - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench engine-extensions - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-stdout - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-diag - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-tcp - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-http - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-cql - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench activitytype-cqlverify - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/pom.xml b/pom.xml index f9eaf1fc0..591f435bb 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT mvn-defaults diff --git a/virtdata-api/pom.xml b/virtdata-api/pom.xml index 7195afa20..e666de0e1 100644 --- a/virtdata-api/pom.xml +++ b/virtdata-api/pom.xml @@ -7,7 +7,7 @@ io.nosqlbench mvn-defaults - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -23,14 +23,14 @@ io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT nb-api io.nosqlbench virtdata-lang - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/virtdata-lang/pom.xml b/virtdata-lang/pom.xml index 41bba7317..9b687e92f 100644 --- a/virtdata-lang/pom.xml +++ b/virtdata-lang/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults diff --git a/virtdata-lib-basics/pom.xml b/virtdata-lib-basics/pom.xml index 665909b58..6333643eb 100644 --- a/virtdata-lib-basics/pom.xml +++ b/virtdata-lib-basics/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -20,7 +20,7 @@ io.nosqlbench virtdata-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/virtdata-lib-curves4/pom.xml b/virtdata-lib-curves4/pom.xml index f52105311..468f63219 100644 --- a/virtdata-lib-curves4/pom.xml +++ b/virtdata-lib-curves4/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -22,13 +22,13 @@ io.nosqlbench virtdata-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench virtdata-lib-basics - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/virtdata-lib-random/pom.xml b/virtdata-lib-random/pom.xml index 68c92ed88..ed84c91bc 100644 --- a/virtdata-lib-random/pom.xml +++ b/virtdata-lib-random/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -20,13 +20,13 @@ io.nosqlbench virtdata-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench virtdata-lib-basics - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/virtdata-lib-realer/pom.xml b/virtdata-lib-realer/pom.xml index caa864d31..89e9197e9 100644 --- a/virtdata-lib-realer/pom.xml +++ b/virtdata-lib-realer/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -24,7 +24,7 @@ io.nosqlbench virtdata-lib-basics - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/virtdata-realdata/pom.xml b/virtdata-realdata/pom.xml index 827afc059..86d97ffc1 100644 --- a/virtdata-realdata/pom.xml +++ b/virtdata-realdata/pom.xml @@ -7,7 +7,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -18,7 +18,7 @@ io.nosqlbench virtdata-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT diff --git a/virtdata-userlibs/pom.xml b/virtdata-userlibs/pom.xml index 635bf832c..3f8ba02b4 100644 --- a/virtdata-userlibs/pom.xml +++ b/virtdata-userlibs/pom.xml @@ -4,7 +4,7 @@ mvn-defaults io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT ../mvn-defaults @@ -17,38 +17,38 @@ io.nosqlbench virtdata-realdata - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench virtdata-lib-realer - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench virtdata-api - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench virtdata-lib-random - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT virtdata-lib-basics io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT virtdata-lib-curves4 io.nosqlbench - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT io.nosqlbench docsys - 3.12.79-SNAPSHOT + 3.12.80-SNAPSHOT