Skip to content
Snippets Groups Projects
Commit d5626110 authored by Robert J. Moore's avatar Robert J. Moore
Browse files

Bump the MongoDB versions.

parent 12ddd5db
No related branches found
No related tags found
No related merge requests found
...@@ -13,19 +13,21 @@ import java.util.HashMap; ...@@ -13,19 +13,21 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.Vector; import java.util.Vector;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import com.mongodb.BasicDBObject; import org.bson.Document;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient; import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI; import com.mongodb.MongoClientURI;
import com.mongodb.ReadPreference; import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern; import com.mongodb.WriteConcern;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOptions;
import com.yahoo.ycsb.ByteArrayByteIterator; import com.yahoo.ycsb.ByteArrayByteIterator;
import com.yahoo.ycsb.ByteIterator; import com.yahoo.ycsb.ByteIterator;
import com.yahoo.ycsb.DB; import com.yahoo.ycsb.DB;
...@@ -95,24 +97,20 @@ public class MongoDbClient extends DB { ...@@ -95,24 +97,20 @@ public class MongoDbClient extends DB {
*/ */
@Override @Override
public int delete(String table, String key) { public int delete(String table, String key) {
com.mongodb.DB db = null; MongoDatabase db = null;
try { try {
db = mongo.getDB(database); db = mongo.getDatabase(database);
db.requestStart(); MongoCollection<Document> collection = db.getCollection(table);
DBCollection collection = db.getCollection(table);
DBObject q = new BasicDBObject().append("_id", key); Document q = new Document("_id", key);
collection.remove(q, writeConcern); collection.withWriteConcern(writeConcern).deleteOne(q);
return 0; return 0;
} }
catch (Exception e) { catch (Exception e) {
System.err.println(e.toString()); System.err.println(e.toString());
return 1; return 1;
} }
finally {
if (db != null) {
db.requestDone();
}
}
} }
/** /**
...@@ -206,21 +204,19 @@ public class MongoDbClient extends DB { ...@@ -206,21 +204,19 @@ public class MongoDbClient extends DB {
@Override @Override
public int insert(String table, String key, public int insert(String table, String key,
HashMap<String, ByteIterator> values) { HashMap<String, ByteIterator> values) {
com.mongodb.DB db = null; MongoDatabase db = null;
try { try {
db = mongo.getDB(database); db = mongo.getDatabase(database);
db.requestStart();
DBCollection collection = db.getCollection(table);
DBObject criteria = new BasicDBObject().append("_id", key);
DBObject toInsert = new BasicDBObject().append("_id", key);
MongoCollection<Document> collection = db.getCollection(table);
Document criteria = new Document("_id", key);
Document toInsert = new Document("_id", key);
for (Map.Entry<String, ByteIterator> entry : values.entrySet()) { for (Map.Entry<String, ByteIterator> entry : values.entrySet()) {
toInsert.put(entry.getKey(), entry.getValue().toArray()); toInsert.put(entry.getKey(), entry.getValue().toArray());
} }
collection.update(criteria, toInsert, true, false, writeConcern); collection.withWriteConcern(writeConcern).updateOne(criteria,
toInsert, new UpdateOptions().upsert(true));
return 0; return 0;
} }
...@@ -228,11 +224,6 @@ public class MongoDbClient extends DB { ...@@ -228,11 +224,6 @@ public class MongoDbClient extends DB {
e.printStackTrace(); e.printStackTrace();
return 1; return 1;
} }
finally {
if (db != null) {
db.requestDone();
}
}
} }
/** /**
...@@ -250,34 +241,32 @@ public class MongoDbClient extends DB { ...@@ -250,34 +241,32 @@ public class MongoDbClient extends DB {
* @return Zero on success, a non-zero error code on error or "not found". * @return Zero on success, a non-zero error code on error or "not found".
*/ */
@Override @Override
@SuppressWarnings("unchecked")
public int read(String table, String key, Set<String> fields, public int read(String table, String key, Set<String> fields,
HashMap<String, ByteIterator> result) { HashMap<String, ByteIterator> result) {
com.mongodb.DB db = null; MongoDatabase db = null;
try { try {
db = mongo.getDB(database); db = mongo.getDatabase(database);
db.requestStart();
DBCollection collection = db.getCollection(table); MongoCollection<Document> collection = db.getCollection(table);
DBObject q = new BasicDBObject().append("_id", key); Document q = new Document("_id", key);
DBObject fieldsToReturn = new BasicDBObject(); Document fieldsToReturn = new Document();
DBObject queryResult = null; Document queryResult = null;
if (fields != null) { if (fields != null) {
Iterator<String> iter = fields.iterator(); Iterator<String> iter = fields.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
fieldsToReturn.put(iter.next(), INCLUDE); fieldsToReturn.put(iter.next(), INCLUDE);
} }
queryResult = collection.findOne(q, fieldsToReturn, queryResult = collection.withReadPreference(readPreference)
readPreference); .find(q).projection(fieldsToReturn).first();
} }
else { else {
queryResult = collection.findOne(q, null, readPreference); queryResult = collection.withReadPreference(readPreference)
.find(q).first();
} }
if (queryResult != null) { if (queryResult != null) {
result.putAll(queryResult.toMap()); fillMap(result, queryResult);
} }
return queryResult != null ? 0 : 1; return queryResult != null ? 0 : 1;
} }
...@@ -285,11 +274,6 @@ public class MongoDbClient extends DB { ...@@ -285,11 +274,6 @@ public class MongoDbClient extends DB {
System.err.println(e.toString()); System.err.println(e.toString());
return 1; return 1;
} }
finally {
if (db != null) {
db.requestDone();
}
}
} }
/** /**
...@@ -313,23 +297,27 @@ public class MongoDbClient extends DB { ...@@ -313,23 +297,27 @@ public class MongoDbClient extends DB {
@Override @Override
public int scan(String table, String startkey, int recordcount, public int scan(String table, String startkey, int recordcount,
Set<String> fields, Vector<HashMap<String, ByteIterator>> result) { Set<String> fields, Vector<HashMap<String, ByteIterator>> result) {
com.mongodb.DB db = null; MongoDatabase db = null;
DBCursor cursor = null; FindIterable<Document> cursor = null;
MongoCursor<Document> iter = null;
try { try {
db = mongo.getDB(database); db = mongo.getDatabase(database);
db.requestStart();
DBCollection collection = db.getCollection(table); MongoCollection<Document> collection = db.getCollection(table);
// { "_id":{"$gte":startKey, "$lte":{"appId":key+"\uFFFF"}} } // { "_id":{"$gte":startKey, "$lte":{"appId":key+"\uFFFF"}} }
DBObject scanRange = new BasicDBObject().append("$gte", startkey); Document scanRange = new Document("$gte", startkey);
DBObject q = new BasicDBObject().append("_id", scanRange); Document q = new Document("_id", scanRange);
cursor = collection.find(q).setReadPreference(readPreference) cursor = collection.withReadPreference(readPreference).find(q)
.limit(recordcount); .limit(recordcount);
while (cursor.hasNext()) {
iter = cursor.iterator();
while (iter.hasNext()) {
// toMap() returns a Map, but result.add() expects a // toMap() returns a Map, but result.add() expects a
// Map<String,String>. Hence, the suppress warnings. // Map<String,String>. Hence, the suppress warnings.
HashMap<String, ByteIterator> resultMap = new HashMap<String, ByteIterator>(); HashMap<String, ByteIterator> resultMap = new HashMap<String, ByteIterator>();
DBObject obj = cursor.next(); Document obj = iter.next();
fillMap(resultMap, obj); fillMap(resultMap, obj);
result.add(resultMap); result.add(resultMap);
...@@ -342,14 +330,10 @@ public class MongoDbClient extends DB { ...@@ -342,14 +330,10 @@ public class MongoDbClient extends DB {
return 1; return 1;
} }
finally { finally {
if (db != null) { if (iter != null) {
if (cursor != null) { iter.close();
cursor.close();
}
db.requestDone();
} }
} }
} }
/** /**
...@@ -369,35 +353,28 @@ public class MongoDbClient extends DB { ...@@ -369,35 +353,28 @@ public class MongoDbClient extends DB {
@Override @Override
public int update(String table, String key, public int update(String table, String key,
HashMap<String, ByteIterator> values) { HashMap<String, ByteIterator> values) {
com.mongodb.DB db = null; MongoDatabase db = null;
try { try {
db = mongo.getDB(database); db = mongo.getDatabase(database);
db.requestStart(); MongoCollection<Document> collection = db.getCollection(table);
Document q = new Document("_id", key);
DBCollection collection = db.getCollection(table); Document fieldsToSet = new Document();
DBObject q = new BasicDBObject().append("_id", key);
DBObject u = new BasicDBObject();
DBObject fieldsToSet = new BasicDBObject();
Iterator<String> keys = values.keySet().iterator(); Iterator<String> keys = values.keySet().iterator();
while (keys.hasNext()) { while (keys.hasNext()) {
String tmpKey = keys.next(); String tmpKey = keys.next();
fieldsToSet.put(tmpKey, values.get(tmpKey).toArray()); fieldsToSet.put(tmpKey, values.get(tmpKey).toArray());
} }
u.put("$set", fieldsToSet); Document u = new Document("$set", fieldsToSet);
collection.update(q, u, false, false, writeConcern);
collection.withWriteConcern(writeConcern).updateOne(q, u);
return 0; return 0;
} }
catch (Exception e) { catch (Exception e) {
System.err.println(e.toString()); System.err.println(e.toString());
return 1; return 1;
} }
finally {
if (db != null) {
db.requestDone();
}
}
} }
/** /**
...@@ -408,10 +385,8 @@ public class MongoDbClient extends DB { ...@@ -408,10 +385,8 @@ public class MongoDbClient extends DB {
* @param obj * @param obj
* The object to copy values from. * The object to copy values from.
*/ */
@SuppressWarnings("unchecked") protected void fillMap(HashMap<String, ByteIterator> resultMap, Document obj) {
protected void fillMap(HashMap<String, ByteIterator> resultMap, DBObject obj) { for (Map.Entry<String, Object> entry : obj.entrySet()) {
Map<String, Object> objMap = obj.toMap();
for (Map.Entry<String, Object> entry : objMap.entrySet()) {
if (entry.getValue() instanceof byte[]) { if (entry.getValue() instanceof byte[]) {
resultMap.put(entry.getKey(), new ByteArrayByteIterator( resultMap.put(entry.getKey(), new ByteArrayByteIterator(
(byte[]) entry.getValue())); (byte[]) entry.getValue()));
......
...@@ -27,6 +27,16 @@ import java.util.Properties; ...@@ -27,6 +27,16 @@ import java.util.Properties;
*/ */
public final class OptionsSupport { public final class OptionsSupport {
/**
* Updates the URL with the appropriate attributes if legacy properties are
* set and the URL does not have the property already set.
*
* @param url
* The URL to update.
* @param props
* The legacy properties.
* @return The updated URL.
*/
public static String updateUrl(String url, Properties props) { public static String updateUrl(String url, Properties props) {
String result = url; String result = url;
......
...@@ -50,8 +50,8 @@ ...@@ -50,8 +50,8 @@
<infinispan.version>7.1.0.CR1</infinispan.version> <infinispan.version>7.1.0.CR1</infinispan.version>
<openjpa.jdbc.version>2.1.1</openjpa.jdbc.version> <openjpa.jdbc.version>2.1.1</openjpa.jdbc.version>
<!--<mapkeeper.version>1.0</mapkeeper.version>--> <!--<mapkeeper.version>1.0</mapkeeper.version>-->
<mongodb.version>2.13.1</mongodb.version> <mongodb.version>3.0.1</mongodb.version>
<mongodb.async.version>2.0.0-SNAPSHOT</mongodb.async.version> <mongodb.async.version>2.0.1</mongodb.async.version>
<orientdb.version>1.0.1</orientdb.version> <orientdb.version>1.0.1</orientdb.version>
<redis.version>2.0.0</redis.version> <redis.version>2.0.0</redis.version>
<voldemort.version>0.81</voldemort.version> <voldemort.version>0.81</voldemort.version>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment