diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 08dd2dbac..1ec46b7c9 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -12,3 +12,14 @@
- ead06c0a improvements to generic configuration APIs
- 0b886931 findmax improvements
- 998439c8 add customizable timers to CQL driver
+- 76779d10 (HEAD -> main) post-merge fixups for cockroachdb driver
+ contribution
+- 5be890bf support both undef and unset in named scenarios
+- 5bbdc961 improve error handling
+- c423cf00 cycle naming for simplicity
+- 9a044522 Initial commit for cockroachdb driver
+- 34b7bfc0 experimental dashboard capture
+- 71c05903 add generalized error handling in http
+- fc42ff47 disable hashed file function for now
+- 83a40b01 provide additional signature for HashedFileExtract
+- cdf2bd59 make info less chatty by pushing some things to debug
diff --git a/docsys/pom.xml b/docsys/pom.xml
index 6bb3c5fba..1f4d8adc7 100644
--- a/docsys/pom.xml
+++ b/docsys/pom.xml
@@ -9,7 +9,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -18,7 +18,7 @@
io.nosqlbench
nb-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
@@ -98,7 +98,7 @@
io.nosqlbench
virtdata-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-cockroachdb/pom.xml b/driver-cockroachdb/pom.xml
new file mode 100644
index 000000000..8baffafe7
--- /dev/null
+++ b/driver-cockroachdb/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+
+ io.nosqlbench
+ mvn-defaults
+ 4.15.11-SNAPSHOT
+ ../mvn-defaults
+
+
+ driver-cockroachdb
+ jar
+ ${project.artifactId}
+
+
+ A CockroachDB ActivityType driver for http://nosqlbench.io/
+
+
+
+
+ io.nosqlbench
+ driver-jdbc
+ 4.15.11-SNAPSHOT
+
+
+ org.postgresql
+ postgresql
+ 42.2.14
+
+
+
+
diff --git a/driver-cockroachdb/src/main/java/io/nosqlbench/activitytype/cockroachdb/CockroachActivity.java b/driver-cockroachdb/src/main/java/io/nosqlbench/activitytype/cockroachdb/CockroachActivity.java
new file mode 100644
index 000000000..d818d77ed
--- /dev/null
+++ b/driver-cockroachdb/src/main/java/io/nosqlbench/activitytype/cockroachdb/CockroachActivity.java
@@ -0,0 +1,56 @@
+package io.nosqlbench.activitytype.cockroachdb;
+
+import io.nosqlbench.activitytype.jdbc.api.JDBCActivity;
+import io.nosqlbench.engine.api.activityimpl.ActivityDef;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.postgresql.ds.PGSimpleDataSource;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.Arrays;
+
+public class CockroachActivity extends JDBCActivity {
+ private static final Logger LOGGER = LogManager.getLogger(CockroachActivity.class);
+
+ public CockroachActivity(ActivityDef activityDef) {
+ super(activityDef);
+ }
+
+ @Override
+ protected DataSource newDataSource() {
+ PGSimpleDataSource ds = new PGSimpleDataSource();
+
+ // serverName is required
+ String serverName = getParams().
+ getOptionalString("serverName").
+ orElseThrow(() -> new RuntimeException("serverName parameter required"));
+
+ // portNumber, user, password are optional
+ Integer portNumber = getParams().getOptionalInteger("portNumber").orElse(26257);
+ String user = getParams().getOptionalString("user").orElse(null);
+ String password = getParams().getOptionalString("password").orElse(null);
+
+ ds.setServerNames(new String[]{serverName});
+ ds.setPortNumbers(new int[]{portNumber});
+ if (user != null) {
+ ds.setUser(user);
+ }
+ if (password != null) {
+ ds.setPassword(password);
+ }
+
+ LOGGER.debug("Final DataSource fields"
+ + " serverNames=" + Arrays.toString(ds.getServerNames())
+ + " portNumbers=" + Arrays.toString(ds.getPortNumbers())
+ + " user=" + ds.getUser()
+ + " password=" + ds.getPassword());
+
+ return ds;
+ }
+
+ @Override
+ public boolean isRetryable(SQLException sqlException) {
+ return sqlException.getSQLState().equals("40001"); // sql state code for transaction conflict
+ }
+}
diff --git a/driver-cockroachdb/src/main/java/io/nosqlbench/activitytype/cockroachdb/CockroachActivityType.java b/driver-cockroachdb/src/main/java/io/nosqlbench/activitytype/cockroachdb/CockroachActivityType.java
new file mode 100644
index 000000000..53ceba9d4
--- /dev/null
+++ b/driver-cockroachdb/src/main/java/io/nosqlbench/activitytype/cockroachdb/CockroachActivityType.java
@@ -0,0 +1,25 @@
+package io.nosqlbench.activitytype.cockroachdb;
+
+import io.nosqlbench.activitytype.jdbc.api.JDBCActionDispenser;
+import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
+import io.nosqlbench.engine.api.activityapi.core.ActivityType;
+import io.nosqlbench.engine.api.activityimpl.ActivityDef;
+import io.nosqlbench.nb.annotations.Service;
+
+@Service(ActivityType.class)
+public class CockroachActivityType implements ActivityType {
+ @Override
+ public String getName() {
+ return "cockroachdb";
+ }
+
+ @Override
+ public ActionDispenser getActionDispenser(CockroachActivity activity) {
+ return new JDBCActionDispenser(activity);
+ }
+
+ @Override
+ public CockroachActivity getActivity(ActivityDef activityDef) {
+ return new CockroachActivity(activityDef);
+ }
+}
diff --git a/driver-cockroachdb/src/main/resources/activities/cockroachdb-basic.yaml b/driver-cockroachdb/src/main/resources/activities/cockroachdb-basic.yaml
new file mode 100644
index 000000000..5d5f671fc
--- /dev/null
+++ b/driver-cockroachdb/src/main/resources/activities/cockroachdb-basic.yaml
@@ -0,0 +1,69 @@
+# java -jar nb.jar run driver=cockroachdb workload=cockroachdb-basic tags=phase:rampup cycles=10 serverName=localhost
+# java -jar nb.jar run driver=cockroachdb workload=cockroachdb-basic tags=phase:main cycles=10 serverName=localhost
+description: An example of a basic cockroach insert
+
+scenarios:
+ default:
+ - run driver=cockroachdb tags==phase:main threads==auto cycles===<>
+ rampup:
+ - run driver=cockroachdb tags==phase:rampup threads==auto cycles===<>
+ schema:
+ - run driver=cockroachdb tags==phase:schema threads==1 cycles===2
+ #- run driver=stdout tags==phase:schema threads==1 cycles===UNDEF
+
+bindings:
+ seq_key: Mod(<>L); ToInt()
+ seq_value: Mod(<>L); <>; ToString() -> String
+ rw_key: <long>>; ToInt()
+ rw_value: <int>>; <>; ToString() -> String
+
+blocks:
+ - name: schema
+ tags:
+ phase: schema
+ params:
+ statements:
+ - create-database: |
+ CREATE DATABASE <>;
+ tags:
+ name: create-database
+ - create-table: |
+ CREATE TABLE IF NOT EXISTS <>.<> (
+ code STRING PRIMARY KEY,
+ amount INTEGER
+ );
+ tags:
+ name: create-table
+ - name: rampup
+ tags:
+ phase: rampup
+ params:
+ statements:
+ - rampup-insert: insert into <>.<> ( code, amount ) values ( '{seq_key}', {seq_value} );
+ params:
+ tags:
+ name: rampup-insert
+ - name: main-read
+ tags:
+ phase: main
+ type: read
+ params:
+ ratio: <>
+ statements:
+ - main-find: |
+ SELECT code, amount FROM <>.<> WHERE code = '{rw_key}' AND amount = {rw_value};
+ params:
+ tags:
+ name: main-find
+ - name: main-write
+ tags:
+ phase: main
+ type: write
+ params:
+ ratio: <>
+ statements:
+ - main-insert: |
+ UPDATE <>.<> SET amount = {seq_value} WHERE code = '{seq_key}';
+ params:
+ tags:
+ name: main-insert
diff --git a/driver-cockroachdb/src/main/resources/cockroachdb.md b/driver-cockroachdb/src/main/resources/cockroachdb.md
new file mode 100644
index 000000000..69eaba8ba
--- /dev/null
+++ b/driver-cockroachdb/src/main/resources/cockroachdb.md
@@ -0,0 +1,20 @@
+# CockroachDB Driver
+
+This is a driver for CockroachDB. It extends the generic JDBC Driver and
+inherits its parameters.
+
+### CockroachDB driver parameters
+
+All parameters correspond to the postgresql JDBC library parameters. See
+the
+[DataSource Configuration Properties](https://jdbc.postgresql.org/documentation/81/ds-ds.html)
+section for detailed parameter documentation.
+
+* **serverName** (required) - database hostname
+* **portNumber** (optional) - database listen port; defaults to 26257.
+* **user** (optional) - database account username; defaults to empty.
+* **password** (optional) - database account password; defaults to empty.
+* **connectionpool** (optional) - connection pool implementation; defaults
+ to no connection pool. Allowed values:
+ * *hikari* -
+ use [HikariCP](https://github.com/brettwooldridge/HikariCP)
diff --git a/driver-cql-shaded/pom.xml b/driver-cql-shaded/pom.xml
index c2a4bb1ac..957c45869 100644
--- a/driver-cql-shaded/pom.xml
+++ b/driver-cql-shaded/pom.xml
@@ -4,7 +4,7 @@
io.nosqlbench
mvn-defaults
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -23,13 +23,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-cqlverify/pom.xml b/driver-cqlverify/pom.xml
index 9ff269da8..2d9f7c783 100644
--- a/driver-cqlverify/pom.xml
+++ b/driver-cqlverify/pom.xml
@@ -4,7 +4,7 @@
io.nosqlbench
mvn-defaults
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -24,13 +24,13 @@
io.nosqlbench
driver-cql-shaded
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-diag/pom.xml b/driver-diag/pom.xml
index 0e67aa1e7..bfc5c5450 100644
--- a/driver-diag/pom.xml
+++ b/driver-diag/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -20,13 +20,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-dsegraph-shaded/pom.xml b/driver-dsegraph-shaded/pom.xml
index d9d30e730..72748b82b 100644
--- a/driver-dsegraph-shaded/pom.xml
+++ b/driver-dsegraph-shaded/pom.xml
@@ -4,7 +4,7 @@
io.nosqlbench
mvn-defaults
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -23,13 +23,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-http/pom.xml b/driver-http/pom.xml
index 97a22faef..70efb5a9b 100644
--- a/driver-http/pom.xml
+++ b/driver-http/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -22,13 +22,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-http/src/main/java/io/nosqlbench/activitytype/http/InvalidStatusCodeException.java b/driver-http/src/main/java/io/nosqlbench/activitytype/http/InvalidStatusCodeException.java
index e13c5986c..85d957570 100644
--- a/driver-http/src/main/java/io/nosqlbench/activitytype/http/InvalidStatusCodeException.java
+++ b/driver-http/src/main/java/io/nosqlbench/activitytype/http/InvalidStatusCodeException.java
@@ -7,6 +7,11 @@ public class InvalidStatusCodeException extends RuntimeException {
private final Pattern ok_status;
private final int statusCode;
+ @Override
+ public String getMessage() {
+ return "Server returned status code '" + statusCode + "' which did not match ok_status '" + ok_status.toString() + "'";
+ }
+
public InvalidStatusCodeException(long cycleValue, Pattern ok_status, int statusCode) {
this.cycleValue = cycleValue;
this.ok_status = ok_status;
diff --git a/driver-jdbc/pom.xml b/driver-jdbc/pom.xml
new file mode 100644
index 000000000..716c06ee8
--- /dev/null
+++ b/driver-jdbc/pom.xml
@@ -0,0 +1,29 @@
+
+
+
+ nosqlbench
+ io.nosqlbench
+ 4.15.11-SNAPSHOT
+
+ 4.0.0
+
+ driver-jdbc
+
+
+
+ com.zaxxer
+ HikariCP
+ 3.4.5
+
+
+ io.nosqlbench
+ engine-api
+ 4.15.11-SNAPSHOT
+ compile
+
+
+
+
+
diff --git a/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/api/JDBCActionDispenser.java b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/api/JDBCActionDispenser.java
new file mode 100644
index 000000000..fb4d07441
--- /dev/null
+++ b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/api/JDBCActionDispenser.java
@@ -0,0 +1,18 @@
+package io.nosqlbench.activitytype.jdbc.api;
+
+import io.nosqlbench.activitytype.jdbc.impl.JDBCAction;
+import io.nosqlbench.engine.api.activityapi.core.Action;
+import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
+
+public class JDBCActionDispenser implements ActionDispenser {
+ private final JDBCActivity activity;
+
+ public JDBCActionDispenser(JDBCActivity a) {
+ activity = a;
+ }
+
+ @Override
+ public Action getAction(int slot) {
+ return new JDBCAction(activity, slot);
+ }
+}
diff --git a/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/api/JDBCActivity.java b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/api/JDBCActivity.java
new file mode 100644
index 000000000..826529599
--- /dev/null
+++ b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/api/JDBCActivity.java
@@ -0,0 +1,137 @@
+package io.nosqlbench.activitytype.jdbc.api;
+
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Histogram;
+import com.codahale.metrics.Timer;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import io.nosqlbench.activitytype.jdbc.impl.ReadyJDBCOp;
+import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
+import io.nosqlbench.engine.api.activityimpl.ActivityDef;
+import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
+import io.nosqlbench.engine.api.metrics.ActivityMetrics;
+import io.nosqlbench.engine.api.metrics.ExceptionCountMetrics;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.concurrent.ConcurrentHashMap;
+
+// This should not be exposed as as service directly unless it can
+// be used with a modular JDBC configuration.
+public abstract class JDBCActivity extends SimpleActivity {
+ private final static Logger LOGGER = LogManager.getLogger(JDBCActivity.class);
+ private Timer bindTimer;
+ private Timer resultTimer;
+ private Timer resultSuccessTimer;
+ private Histogram triesHisto;
+ private ExceptionCountMetrics exceptionCount;
+ private SQLExceptionCountMetrics sqlExceptionCount;
+
+ protected DataSource dataSource;
+ protected OpSequence opSequence;
+
+ public JDBCActivity(ActivityDef activityDef) {
+ super(activityDef);
+ }
+
+ /*
+ Subclasses construct a DataSource object. Concrete type should *not* be a pooled DataSource,
+ as this class implements wrapping with HikariDataSource if required.
+ */
+ protected abstract DataSource newDataSource();
+
+ @Override
+ public synchronized void onActivityDefUpdate(ActivityDef activityDef) {
+ super.onActivityDefUpdate(activityDef);
+
+ LOGGER.debug("initializing data source");
+ dataSource = newDataSource();
+
+ String connectionPool = getParams().getOptionalString("connectionpool").orElse("");
+ if (!connectionPool.isEmpty()) {
+ LOGGER.debug("initializing connectionpool " + connectionPool);
+ if (connectionPool.equals("hikari")) {
+ HikariConfig config = new HikariConfig();
+ config.setDataSource(dataSource);
+ dataSource = new HikariDataSource(config);
+ } else {
+ throw new RuntimeException("unknown connectionpool parameter value " + connectionPool);
+ }
+ }
+ }
+
+ @Override
+ public void initActivity() {
+ LOGGER.debug("initializing activity: " + getActivityDef().getAlias());
+ bindTimer = ActivityMetrics.timer(getActivityDef(), "bind");
+ resultTimer = ActivityMetrics.timer(getActivityDef(), "result");
+ resultSuccessTimer = ActivityMetrics.timer(getActivityDef(), "result-success");
+ triesHisto = ActivityMetrics.histogram(getActivityDef(), "tries");
+ exceptionCount = new ExceptionCountMetrics(getActivityDef());
+ sqlExceptionCount = new SQLExceptionCountMetrics(getActivityDef());
+
+ opSequence = createOpSequence(ReadyJDBCOp::new);
+ setDefaultsFromOpSequence(opSequence);
+
+ onActivityDefUpdate(getActivityDef());
+ }
+
+ public int getMaxTries() {
+ return 3;
+ }
+
+ public boolean isRetryable(SQLException sqlException) {
+ return true;
+ }
+
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public OpSequence getOpSequence() {
+ return opSequence;
+ }
+
+ public Timer getBindTimer() {
+ return bindTimer;
+ }
+
+ public Timer getResultTimer() {
+ return resultTimer;
+ }
+
+ public Timer getResultSuccessTimer() {
+ return resultSuccessTimer;
+ }
+
+ public Histogram getTriesHisto() {
+ return triesHisto;
+ }
+
+ public ExceptionCountMetrics getExceptionCount() {
+ return exceptionCount;
+ }
+
+ public SQLExceptionCountMetrics getSQLExceptionCount() {
+ return sqlExceptionCount;
+ }
+
+ public static class SQLExceptionCountMetrics {
+ private final ConcurrentHashMap counters = new ConcurrentHashMap<>();
+ private final ActivityDef activityDef;
+
+ private SQLExceptionCountMetrics(ActivityDef activityDef) {
+ this.activityDef = activityDef;
+ }
+
+ public void inc(SQLException e) {
+ Counter c = counters.computeIfAbsent(
+ e.getErrorCode(),
+ k -> ActivityMetrics.counter(activityDef, "errorcodecounts." + k)
+ );
+ c.inc();
+ }
+ }
+}
diff --git a/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/JDBCAction.java b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/JDBCAction.java
new file mode 100644
index 000000000..2df54e01a
--- /dev/null
+++ b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/JDBCAction.java
@@ -0,0 +1,94 @@
+package io.nosqlbench.activitytype.jdbc.impl;
+
+import com.codahale.metrics.Timer;
+import io.nosqlbench.activitytype.jdbc.api.JDBCActivity;
+import io.nosqlbench.engine.api.activityapi.core.SyncAction;
+import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.sql.*;
+import java.util.concurrent.TimeUnit;
+
+public class JDBCAction implements SyncAction {
+ private static final Logger LOGGER = LogManager.getLogger(JDBCAction.class);
+
+ private final JDBCActivity activity;
+ private OpSequence sequencer;
+
+ public JDBCAction(JDBCActivity a, int slot) {
+ activity = a;
+ }
+
+ @Override
+ public void init() {
+ sequencer = activity.getOpSequence();
+ }
+
+ @Override
+ public int runCycle(long cycle) {
+ String boundStmt;
+
+ ReadyJDBCOp unboundStmt = sequencer.get(cycle);
+
+ try (Timer.Context bindTime = activity.getBindTimer().time()) {
+ boundStmt = unboundStmt.apply(cycle);
+ }
+
+ int maxTries = activity.getMaxTries();
+ int errorCode = 0;
+
+ for (int tries = 1; tries <= maxTries; tries++) {
+ errorCode = execute(boundStmt, tries);
+ if (errorCode == 0) return 0;
+ }
+
+ LOGGER.debug("Max tries " + maxTries + " exceeded for executing statement " + boundStmt);
+ return errorCode;
+ }
+
+ private int execute(String sql, int tries) {
+ long startTimeNano = System.nanoTime();
+ Long resultTime = null;
+
+ try (Connection conn = activity.getDataSource().getConnection()) {
+ Statement jdbcStmt = conn.createStatement();
+ jdbcStmt.execute(sql);
+
+ resultTime = System.nanoTime() - startTimeNano;
+ activity.getResultSuccessTimer().update(resultTime, TimeUnit.NANOSECONDS);
+
+ } catch (Exception e) {
+ LOGGER.debug("Try " + tries + ": failed to execute statement: " + sql, e);
+
+ activity.getExceptionCount().count(e);
+
+ if (e instanceof SQLException) {
+ SQLException sqle = (SQLException) e;
+
+ activity.getSQLExceptionCount().inc(sqle);
+
+ // TODO non-retryable exception should return its non-zero error code to runCycle() caller
+ if (!activity.isRetryable(sqle)) {
+ return 0;
+ }
+
+ return sqle.getErrorCode();
+ }
+
+ return 1;
+
+ } finally {
+ if (resultTime == null) {
+ resultTime = System.nanoTime() - startTimeNano;
+ }
+
+ activity.getResultTimer().update(resultTime, TimeUnit.NANOSECONDS);
+ activity.getTriesHisto().update(tries);
+ }
+
+ LOGGER.trace("Try " + tries + ": successfully executed statement: " + sql);
+ return 0;
+ }
+
+}
diff --git a/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java
new file mode 100644
index 000000000..4734e59ac
--- /dev/null
+++ b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java
@@ -0,0 +1,26 @@
+package io.nosqlbench.activitytype.jdbc.impl;
+
+import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate;
+import io.nosqlbench.virtdata.core.bindings.BindingsTemplate;
+import io.nosqlbench.virtdata.core.templates.ParsedTemplate;
+import io.nosqlbench.virtdata.core.templates.StringBindings;
+import io.nosqlbench.virtdata.core.templates.StringBindingsTemplate;
+
+import java.util.function.LongFunction;
+
+public class ReadyJDBCOp implements LongFunction {
+ private final StringBindings bindings;
+
+ public ReadyJDBCOp(OpTemplate stmtDef) {
+ ParsedTemplate paramTemplate = new ParsedTemplate(stmtDef.getStmt(), stmtDef.getBindings());
+ BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints());
+ StringBindingsTemplate template = new StringBindingsTemplate(stmtDef.getStmt(), paramBindings);
+
+ bindings = template.resolve();
+ }
+
+ @Override
+ public String apply(long cycle) {
+ return bindings.bind(cycle);
+ }
+}
diff --git a/driver-jmx/pom.xml b/driver-jmx/pom.xml
index ba2ad0e8c..e6a26187d 100644
--- a/driver-jmx/pom.xml
+++ b/driver-jmx/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -22,13 +22,13 @@
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-kafka/pom.xml b/driver-kafka/pom.xml
index 98811e4b7..f18f68231 100644
--- a/driver-kafka/pom.xml
+++ b/driver-kafka/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -44,13 +44,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-stdout
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-mongodb/pom.xml b/driver-mongodb/pom.xml
index 9a48a0e72..012f05ce6 100644
--- a/driver-mongodb/pom.xml
+++ b/driver-mongodb/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -21,13 +21,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-stdout/pom.xml b/driver-stdout/pom.xml
index 90070a3d4..3a9eec7e8 100644
--- a/driver-stdout/pom.xml
+++ b/driver-stdout/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -22,13 +22,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-tcp/pom.xml b/driver-tcp/pom.xml
index 852bec998..875d21743 100644
--- a/driver-tcp/pom.xml
+++ b/driver-tcp/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -24,19 +24,19 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-stdout
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/driver-web/pom.xml b/driver-web/pom.xml
index fa60c1af7..089c07d70 100644
--- a/driver-web/pom.xml
+++ b/driver-web/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -22,13 +22,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/drivers-api/pom.xml b/drivers-api/pom.xml
index 1b6c22406..02804be9c 100644
--- a/drivers-api/pom.xml
+++ b/drivers-api/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -23,13 +23,13 @@
io.nosqlbench
nb-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-userlibs
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-api/pom.xml b/engine-api/pom.xml
index 5f4a7c922..8d4b528e4 100644
--- a/engine-api/pom.xml
+++ b/engine-api/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -23,25 +23,25 @@
io.nosqlbench
nb-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
nb-annotations
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-userlibs
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java
index 1724398ea..394224d6f 100644
--- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java
+++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java
@@ -13,9 +13,6 @@ public class StopErrorHandler implements ErrorHandler {
@Override
public ErrorDetail handleError(Throwable t, long cycle, long durationInNanos, ErrorDetail detail) {
- String durationSummary = String.format("%.3fS", ((double) durationInNanos / 1000000000.0));
- throw new RuntimeException(
- "An error was rethrown in order to stop the activity in cycle:" + cycle + ", duration:" + durationSummary + " msg:" +
- t.getMessage());
+ throw new RuntimeException(t);
}
}
diff --git a/engine-cli/pom.xml b/engine-cli/pom.xml
index 14080978e..9c26e20e8 100644
--- a/engine-cli/pom.xml
+++ b/engine-cli/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -23,13 +23,13 @@
io.nosqlbench
engine-core
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
engine-docker
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-clients/pom.xml b/engine-clients/pom.xml
index 3184d7a35..6003323bc 100644
--- a/engine-clients/pom.xml
+++ b/engine-clients/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -21,7 +21,7 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-core/pom.xml b/engine-core/pom.xml
index eeca6829f..4626f1260 100644
--- a/engine-core/pom.xml
+++ b/engine-core/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -28,13 +28,13 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
drivers-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
@@ -85,7 +85,7 @@
io.nosqlbench
engine-clients
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
compile
diff --git a/engine-docker/pom.xml b/engine-docker/pom.xml
index a6ae1283a..7edd25fb1 100644
--- a/engine-docker/pom.xml
+++ b/engine-docker/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -65,7 +65,7 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-docs/pom.xml b/engine-docs/pom.xml
index 7383ddcef..3936eef08 100644
--- a/engine-docs/pom.xml
+++ b/engine-docs/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -28,7 +28,7 @@
io.nosqlbench
docsys
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-extensions/pom.xml b/engine-extensions/pom.xml
index 71fe00a23..59d68cd36 100644
--- a/engine-extensions/pom.xml
+++ b/engine-extensions/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -22,7 +22,7 @@
io.nosqlbench
engine-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/engine-rest/pom.xml b/engine-rest/pom.xml
index 3815f0171..f93e18679 100644
--- a/engine-rest/pom.xml
+++ b/engine-rest/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -47,7 +47,7 @@
io.nosqlbench
engine-cli
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml
index 8e782bcdd..c71c32201 100644
--- a/mvn-defaults/pom.xml
+++ b/mvn-defaults/pom.xml
@@ -3,7 +3,7 @@
io.nosqlbench
mvn-defaults
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
pom
diff --git a/nb-annotations/pom.xml b/nb-annotations/pom.xml
index f82fe385f..8354237ad 100644
--- a/nb-annotations/pom.xml
+++ b/nb-annotations/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
diff --git a/nb-api/pom.xml b/nb-api/pom.xml
index 3dcda8972..ee88375bd 100644
--- a/nb-api/pom.xml
+++ b/nb-api/pom.xml
@@ -5,7 +5,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -31,7 +31,7 @@
io.nosqlbench
nb-annotations
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
@@ -59,7 +59,7 @@
com.github.oshi
oshi-core
-
+
diff --git a/nb/pom.xml b/nb/pom.xml
index 8d922d624..0384a9637 100644
--- a/nb/pom.xml
+++ b/nb/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -26,31 +26,31 @@
io.nosqlbench
engine-rest
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
engine-cli
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
engine-docs
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
engine-core
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
engine-extensions
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
@@ -62,67 +62,79 @@
io.nosqlbench
driver-web
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-kafka
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-stdout
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-diag
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-tcp
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-http
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-jmx
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-dsegraph-shaded
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-cql-shaded
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-cqlverify
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
driver-mongodb
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
+
+
+
+
+
+
+
+
+
+ io.nosqlbench
+ driver-cockroachdb
+ 4.15.11-SNAPSHOT
@@ -243,7 +255,7 @@
io.nosqlbench
driver-mongodb
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 8d4af1f46..29a33af1f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
mvn-defaults
@@ -53,6 +53,8 @@
driver-kafka
driver-mongodb
driver-jmx
+ driver-jdbc
+ driver-cockroachdb
driver-pulsar
diff --git a/virtdata-api/pom.xml b/virtdata-api/pom.xml
index 12ec8f0c3..0e4e3e7a1 100644
--- a/virtdata-api/pom.xml
+++ b/virtdata-api/pom.xml
@@ -7,7 +7,7 @@
io.nosqlbench
mvn-defaults
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -23,14 +23,14 @@
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
nb-api
io.nosqlbench
virtdata-lang
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/virtdata-lang/pom.xml b/virtdata-lang/pom.xml
index 47b3e7427..86916cd4e 100644
--- a/virtdata-lang/pom.xml
+++ b/virtdata-lang/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
diff --git a/virtdata-lib-basics/pom.xml b/virtdata-lib-basics/pom.xml
index 19e4bbcbe..5a53bd52f 100644
--- a/virtdata-lib-basics/pom.xml
+++ b/virtdata-lib-basics/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -20,7 +20,7 @@
io.nosqlbench
virtdata-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/virtdata-lib-curves4/pom.xml b/virtdata-lib-curves4/pom.xml
index 135c763d4..b964df7d7 100644
--- a/virtdata-lib-curves4/pom.xml
+++ b/virtdata-lib-curves4/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -22,13 +22,13 @@
io.nosqlbench
virtdata-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-lib-basics
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/virtdata-lib-random/pom.xml b/virtdata-lib-random/pom.xml
index 02fd5f8c5..816d9cc04 100644
--- a/virtdata-lib-random/pom.xml
+++ b/virtdata-lib-random/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -20,13 +20,13 @@
io.nosqlbench
virtdata-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-lib-basics
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/virtdata-lib-realer/pom.xml b/virtdata-lib-realer/pom.xml
index b382f06aa..d6bbd7f55 100644
--- a/virtdata-lib-realer/pom.xml
+++ b/virtdata-lib-realer/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -20,7 +20,7 @@
io.nosqlbench
virtdata-lib-basics
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/virtdata-realdata/pom.xml b/virtdata-realdata/pom.xml
index 300573161..ded73245e 100644
--- a/virtdata-realdata/pom.xml
+++ b/virtdata-realdata/pom.xml
@@ -7,7 +7,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -18,7 +18,7 @@
io.nosqlbench
virtdata-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
diff --git a/virtdata-userlibs/pom.xml b/virtdata-userlibs/pom.xml
index 4634ee656..1eff78411 100644
--- a/virtdata-userlibs/pom.xml
+++ b/virtdata-userlibs/pom.xml
@@ -4,7 +4,7 @@
mvn-defaults
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
../mvn-defaults
@@ -18,36 +18,36 @@
io.nosqlbench
virtdata-realdata
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-lib-realer
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-api
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
virtdata-lib-random
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
virtdata-lib-basics
io.nosqlbench
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT
virtdata-lib-curves4
@@ -55,7 +55,7 @@
io.nosqlbench
docsys
- 4.15.10-SNAPSHOT
+ 4.15.11-SNAPSHOT