Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions aerospike/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,85 @@ Run the workload test:

./bin/ycsb run aerospike -s -P workloads/workloada >outputRun.txt

This is patched version and it contains next things.

## Changes

### New arguments
* `as.tlsEnable` - TLS (default: `false`)
* `as.commitLevel` - AP mode commit level: `COMMIT_MASTER`, or `COMMIT_ALL` (default: `COMMIT_MASTER`)
* `as.consistencyLevel` - AP mode commit level: `CONSISTENCY_ONE`, or `CONSISTENCY_ALL` (default: `CONSISTENCY_ONE`)
* `as.linearizeRead` - SC mode session consistency (default: false)

### Changes
* `timeout` now is socket timeout
* client bumped version 4

### Sample run scripts

```SH
#!/bin/bash
YCSB="/root/ycsb-aerospike-binding-0.14.0-SNAPSHOT"
#YCSB="/opt/ycsb"
REPORTS="/opt/app/_reports"
YCSB_BIN="${YCSB}/bin/ycsb"

WORKLOAD="$(pwd)/workloads/workload_1"
HOST="host:cluster:3000"

NAMESPACE=ycsb-ap
#NAMESPACE=ycsb-mem

THREADS=48

OUTPUT_NAME=`date '+%Y-%m-%d_%H-%M'_run_`${NAMESPACE}
mkdir -p "${REPORTS}/${OUTPUT_NAME}"
OUTPUT="${REPORTS}/${OUTPUT_NAME}"
cd "$YCSB"

JVM_ARGS='' #-Djavax.net.ssl.trustStore=/root/aerospike/keystore.jks' #'-Dcom.aerospike.client.policy.linerizeRead=true'

for (( i=0; i < 4; i++ ))
do
nohup ${YCSB_BIN} run aerospike -s -P ${WORKLOAD} \
-jvm-args=${JVM_ARGS} \
-p as.host=${HOST} -p as.namespace=${NAMESPACE} -p as.timeout=2000 \
-p maxexecutiontime=1200 -p as.linearizeRead=false \
-p as.tlsEnable=false \
-p as.consistencyLevel=CONSISTENCY_ALL -p as.commitLevel=COMMIT_ALL \
-p measurementtype=raw -p measurement.raw.output_file=${OUTPUT}/run$i.log \
-threads ${THREADS} -target 20000 > ${OUTPUT}/transactions$i.dat &
done
```

```SH
#!/bin/bash
YCSB="/root/ycsb-aerospike-binding-0.14.0-SNAPSHOT"
#YCSB="/opt/ycsb"
REPORTS="/opt/app/_reports"
YCSB_BIN="${YCSB}/bin/ycsb"

WORKLOAD="$(pwd)/workloads/workload_1"
HOST=host

NAMESPACE=ycsb-sc
#NAMESPACE=ycsb-mem

THREADS=24

OUTPUT_NAME=`date '+%Y-%m-%d_%H-%M'_load_`${NAMESPACE}
mkdir -p "${REPORTS}/${OUTPUT_NAME}"
OUTPUT="${REPORTS}/${OUTPUT_NAME}"
cd "$YCSB"

# -target - by default maximum
${YCSB_BIN} load aerospike -s -P ${WORKLOAD} \
-p as.host=${HOST} -p as.namespace=${NAMESPACE}\
-p as.insertMaxRetries=2 -p as.timeout=12000 \
-p as.linearizeRead=false \
-jvm-args='-Xms100G -Xmx100G -XX:MaxGCPauseMillis=100 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=1 -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCDateStamps -Xloggc:/var/log/ycsb-gc.log' \
-threads ${THREADS} > ${OUTPUT}/load.dat


# -p measurementtype=raw -p measurement.raw.output_file=${OUTPUT}/load.log \
```
49 changes: 44 additions & 5 deletions aerospike/src/main/java/com/yahoo/ycsb/db/AerospikeClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,15 @@

import com.aerospike.client.AerospikeException;
import com.aerospike.client.Bin;
import com.aerospike.client.Host;
import com.aerospike.client.Key;
import com.aerospike.client.Record;
import com.aerospike.client.policy.ClientPolicy;
import com.aerospike.client.policy.CommitLevel;
import com.aerospike.client.policy.ConsistencyLevel;
import com.aerospike.client.policy.Policy;
import com.aerospike.client.policy.RecordExistsAction;
import com.aerospike.client.policy.TlsPolicy;
import com.aerospike.client.policy.WritePolicy;
import com.yahoo.ycsb.ByteArrayByteIterator;
import com.yahoo.ycsb.ByteIterator;
Expand Down Expand Up @@ -69,22 +73,57 @@ public void init() throws DBException {
int port = Integer.parseInt(props.getProperty("as.port", DEFAULT_PORT));
int timeout = Integer.parseInt(props.getProperty("as.timeout",
DEFAULT_TIMEOUT));
boolean linearizeRead = props.getProperty("as.linearizeRead", "false")
.equals("true");
String consistencyLevel = props.getProperty("as.consistencyLevel",
"CONSISTENCY_ONE"); // or _ALL
String commitLevel = props.getProperty("as.commitLevel",
"COMMIT_MASTER"); // or _ALL
int maxRetries = Integer.parseInt(props.getProperty("as.insertMaxRetries", "0"));
boolean tlsEnable = props.getProperty("as.tlsEnable", "false")
.equals("true");

readPolicy.setTimeout(timeout);
insertPolicy.setTimeout(timeout);
updatePolicy.setTimeout(timeout);
deletePolicy.setTimeout(timeout);

insertPolicy.maxRetries = maxRetries;
readPolicy.linearizeRead = linearizeRead;
updatePolicy.linearizeRead = linearizeRead;

readPolicy.timeout = timeout;
insertPolicy.timeout = timeout;
updatePolicy.timeout = timeout;
deletePolicy.timeout = timeout;
try {
insertPolicy.commitLevel = CommitLevel.valueOf(commitLevel);
updatePolicy.commitLevel = CommitLevel.valueOf(commitLevel);
deletePolicy.commitLevel = CommitLevel.valueOf(commitLevel);
} catch(IllegalArgumentException e) {
throw e;
}

try {
insertPolicy.consistencyLevel = ConsistencyLevel.valueOf(consistencyLevel);
updatePolicy.consistencyLevel = ConsistencyLevel.valueOf(consistencyLevel);
deletePolicy.consistencyLevel = ConsistencyLevel.valueOf(consistencyLevel);
} catch(IllegalArgumentException e) {
throw e;
}

ClientPolicy clientPolicy = new ClientPolicy();

if (tlsEnable) {
clientPolicy.tlsPolicy = new TlsPolicy();
}

if (user != null && password != null) {
clientPolicy.user = user;
clientPolicy.password = password;
}

Host[] hosts = Host.parseHosts(host, port);

try {
client =
new com.aerospike.client.AerospikeClient(clientPolicy, host, port);
new com.aerospike.client.AerospikeClient(clientPolicy, hosts);
} catch (AerospikeException e) {
throw new DBException(String.format("Error while creating Aerospike " +
"client for %s:%d.", host, port), e);
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ LICENSE file.
<couchbase2.version>2.3.1</couchbase2.version>
<tarantool.version>1.6.5</tarantool.version>
<riak.version>2.0.5</riak.version>
<aerospike.version>3.1.2</aerospike.version>
<aerospike.version>4.1.4</aerospike.version>
<solr.version>5.5.3</solr.version>
<solr6.version>6.4.1</solr6.version>
<arangodb.version>2.7.3</arangodb.version>
Expand Down