From 7438fd62981fb12b47e480e3e16a1bd32c8ee78b Mon Sep 17 00:00:00 2001
From: "Robert J. Moore" <rjmoore@new-host.home>
Date: Sat, 26 Dec 2015 12:17:32 -0500
Subject: [PATCH] [mongodb] Update to use BATCHED_OK Status for batched
 inserts.

This ensures that users do not confuse the results from batched
and non-batched operations.

Closes #522
---
 .../main/java/com/yahoo/ycsb/db/AsyncMongoDbClient.java  | 2 +-
 .../src/main/java/com/yahoo/ycsb/db/MongoDbClient.java   | 4 +++-
 .../src/main/java/com/yahoo/ycsb/db/OptionsSupport.java  | 9 +++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/mongodb/src/main/java/com/yahoo/ycsb/db/AsyncMongoDbClient.java b/mongodb/src/main/java/com/yahoo/ycsb/db/AsyncMongoDbClient.java
index d8fe3884..89eb7d25 100644
--- a/mongodb/src/main/java/com/yahoo/ycsb/db/AsyncMongoDbClient.java
+++ b/mongodb/src/main/java/com/yahoo/ycsb/db/AsyncMongoDbClient.java
@@ -286,7 +286,7 @@ public class AsyncMongoDbClient extends DB {
         batchedWriteCount += 1;
 
         if (batchedWriteCount < batchSize) {
-          return Status.OK;
+          return OptionsSupport.BATCHED_OK;
         }
 
         long count = collection.write(batchedWrite);
diff --git a/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java b/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java
index e0654aa2..1db8f0e1 100644
--- a/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java
+++ b/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java
@@ -56,7 +56,7 @@ import java.util.Vector;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
- * MongoDB asynchronous client for YCSB framework using the MongoDB Inc. <a
+ * MongoDB binding for YCSB framework using the MongoDB Inc. <a
  * href="http://docs.mongodb.org/ecosystem/drivers/java/">driver</a>
  * <p>
  * See the <code>README.md</code> for configuration information.
@@ -285,6 +285,8 @@ public class MongoDbClient extends DB {
             collection.insertMany(bulkInserts, INSERT_UNORDERED);
           }
           bulkInserts.clear();
+        } else {
+          return OptionsSupport.BATCHED_OK;
         }
       }
       return Status.OK;
diff --git a/mongodb/src/main/java/com/yahoo/ycsb/db/OptionsSupport.java b/mongodb/src/main/java/com/yahoo/ycsb/db/OptionsSupport.java
index 62092a0d..c8aacd46 100644
--- a/mongodb/src/main/java/com/yahoo/ycsb/db/OptionsSupport.java
+++ b/mongodb/src/main/java/com/yahoo/ycsb/db/OptionsSupport.java
@@ -18,6 +18,8 @@ package com.yahoo.ycsb.db;
 
 import java.util.Properties;
 
+import com.yahoo.ycsb.Status;
+
 /**
  * OptionsSupport provides methods for handling legacy options.
  *
@@ -25,6 +27,13 @@ import java.util.Properties;
  */
 public final class OptionsSupport {
 
+  /** 
+   * Status used for operations that have not been send to the server and have 
+   * only been batched by the client.
+   */
+  public static final Status BATCHED_OK = new Status("BATCHED_OK", 
+      "The operation has been batched by the binding.");
+
   /** Value for an unavailable property. */
   private static final String UNAVAILABLE = "n/a";
 
-- 
GitLab