diff --git a/dynamodb/pom.xml b/dynamodb/pom.xml index 8815431cd2b5b466bd5ac7643e994fef8716303c..bfe174c67d8a1721069addc32d3c184d8351ca73 100644 --- a/dynamodb/pom.xml +++ b/dynamodb/pom.xml @@ -32,7 +32,7 @@ LICENSE file. <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> - <version>1.3.14</version> + <version>1.10.48</version> </dependency> <dependency> <groupId>log4j</groupId> diff --git a/dynamodb/src/main/java/com/yahoo/ycsb/db/DynamoDBClient.java b/dynamodb/src/main/java/com/yahoo/ycsb/db/DynamoDBClient.java index 042a8e05774eb6ab5649121958eb89f99888a191..e529976031992435cd3b10b0263b640d8b73ba44 100644 --- a/dynamodb/src/main/java/com/yahoo/ycsb/db/DynamoDBClient.java +++ b/dynamodb/src/main/java/com/yahoo/ycsb/db/DynamoDBClient.java @@ -21,19 +21,16 @@ import com.amazonaws.AmazonServiceException; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.PropertiesCredentials; -import com.amazonaws.services.dynamodb.AmazonDynamoDBClient; -import com.amazonaws.services.dynamodb.model.AttributeValue; -import com.amazonaws.services.dynamodb.model.AttributeValueUpdate; -import com.amazonaws.services.dynamodb.model.DeleteItemRequest; -import com.amazonaws.services.dynamodb.model.DeleteItemResult; -import com.amazonaws.services.dynamodb.model.GetItemRequest; -import com.amazonaws.services.dynamodb.model.GetItemResult; -import com.amazonaws.services.dynamodb.model.Key; -import com.amazonaws.services.dynamodb.model.PutItemRequest; -import com.amazonaws.services.dynamodb.model.PutItemResult; -import com.amazonaws.services.dynamodb.model.ScanRequest; -import com.amazonaws.services.dynamodb.model.ScanResult; -import com.amazonaws.services.dynamodb.model.UpdateItemRequest; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; +import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate; +import com.amazonaws.services.dynamodbv2.model.DeleteItemRequest; +import com.amazonaws.services.dynamodbv2.model.GetItemRequest; +import com.amazonaws.services.dynamodbv2.model.GetItemResult; +import com.amazonaws.services.dynamodbv2.model.PutItemRequest; +import com.amazonaws.services.dynamodbv2.model.ScanRequest; +import com.amazonaws.services.dynamodbv2.model.ScanResult; +import com.amazonaws.services.dynamodbv2.model.UpdateItemRequest; import com.yahoo.ycsb.ByteIterator; import com.yahoo.ycsb.DB; import com.yahoo.ycsb.DBException; @@ -51,7 +48,7 @@ import java.util.Set; import java.util.Vector; /** - * DynamoDB v1.3.14 client for YCSB + * DynamoDB v1.10.48 client for YCSB */ public class DynamoDBClient extends DB { @@ -94,18 +91,18 @@ public class DynamoDBClient extends DB { @Override public void init() throws DBException { // initialize DynamoDb driver & table. - String debug = getProperties().getProperty("dynamodb.debug",null); + String debug = getProperties().getProperty("dynamodb.debug", null); if (null != debug && "true".equalsIgnoreCase(debug)) { logger.setLevel(Level.DEBUG); } - String endpoint = getProperties().getProperty("dynamodb.endpoint",null); - String credentialsFile = getProperties().getProperty("dynamodb.awsCredentialsFile",null); - String primaryKey = getProperties().getProperty("dynamodb.primaryKey",null); + String endpoint = getProperties().getProperty("dynamodb.endpoint", null); + String credentialsFile = getProperties().getProperty("dynamodb.awsCredentialsFile", null); + String primaryKey = getProperties().getProperty("dynamodb.primaryKey", null); String primaryKeyTypeString = getProperties().getProperty("dynamodb.primaryKeyType", null); - String consistentReads = getProperties().getProperty("dynamodb.consistentReads",null); - String connectMax = getProperties().getProperty("dynamodb.connectMax",null); + String consistentReads = getProperties().getProperty("dynamodb.consistentReads", null); + String connectMax = getProperties().getProperty("dynamodb.connectMax", null); if (null != connectMax) { this.maxConnects = Integer.parseInt(connectMax); @@ -154,7 +151,7 @@ public class DynamoDBClient extends DB { AWSCredentials credentials = new PropertiesCredentials(new File(credentialsFile)); ClientConfiguration cconfig = new ClientConfiguration(); cconfig.setMaxConnections(maxConnects); - dynamoDB = new AmazonDynamoDBClient(credentials,cconfig); + dynamoDB = new AmazonDynamoDBClient(credentials, cconfig); dynamoDB.setEndpoint(this.endpoint); primaryKeyName = primaryKey; logger.info("dynamodb connection created with " + this.endpoint); @@ -184,8 +181,7 @@ public class DynamoDBClient extends DB { return CLIENT_ERROR; } - if (null != res.getItem()) - { + if (null != res.getItem()) { result.putAll(extractResult(res.getItem())); logger.debug("Result: " + res.toString()); } @@ -221,7 +217,7 @@ public class DynamoDBClient extends DB { int count = 1; // startKey is done, rest to go. - Key startKey = createPrimaryKey(startkey); + Map<String, AttributeValue> startKey = createPrimaryKey(startkey); ScanRequest req = new ScanRequest(table); req.setAttributesToGet(fields); while (count < recordcount) { @@ -278,7 +274,7 @@ public class DynamoDBClient extends DB { } @Override - public Status insert(String table, String key,HashMap<String, ByteIterator> values) { + public Status insert(String table, String key, HashMap<String, ByteIterator> values) { logger.debug("insertkey: " + primaryKeyName + "-" + key + " from table: " + table); Map<String, AttributeValue> attributes = createAttributes(values); // adding primary key @@ -337,20 +333,19 @@ public class DynamoDBClient extends DB { HashMap<String, ByteIterator> rItems = new HashMap<String, ByteIterator>(item.size()); for (Entry<String, AttributeValue> attr : item.entrySet()) { - logger.debug(String.format("Result- key: %s, value: %s", attr.getKey(), attr.getValue()) ); + logger.debug(String.format("Result- key: %s, value: %s", attr.getKey(), attr.getValue())); rItems.put(attr.getKey(), new StringByteIterator(attr.getValue().getS())); } return rItems; } - private Key createPrimaryKey(String key) { - Key k; + private Map<String, AttributeValue> createPrimaryKey(String key) { + Map<String, AttributeValue> k = new HashMap<String, AttributeValue>(); if (primaryKeyType == PrimaryKeyType.HASH) { - k = new Key().withHashKeyElement(new AttributeValue().withS(key)); + k.put(primaryKeyName, new AttributeValue().withS(key)); } else if (primaryKeyType == PrimaryKeyType.HASH_AND_RANGE) { - k = new Key() - .withHashKeyElement(new AttributeValue().withS(hashKeyValue)) - .withRangeKeyElement(new AttributeValue().withS(key)); + k.put(hashKeyName, new AttributeValue().withS(hashKeyValue)); + k.put(primaryKeyName, new AttributeValue().withS(key)); } else { throw new RuntimeException("Assertion Error: impossible primary key" + " type");