Merge branch 'gerrit/neo' into 'gerrit/trinity'

Change-Id: Ibccdc62da16e5d901acebd96f2d85328a2f8d760
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
index 1e7f4b7..3b8ee68 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
@@ -282,7 +282,9 @@
 
                 @Override
                 public void frameCompleted() throws HyracksDataException {
-                    appender.write(writer, true);
+                    if (appender.getTupleCount() > 0) {
+                        appender.write(writer, true);
+                    }
                     callback.frameCompleted();
                 }
 
@@ -404,7 +406,9 @@
      */
     @Override
     public void flushPartialFrame() throws HyracksDataException {
-        appender.write(writer, true);
+        if (appender.getTupleCount() > 0) {
+            appender.write(writer, true);
+        }
     }
 
     protected void appendFilterToPrevTuple() throws IOException {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
index 955d5aa..eb4e46a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
@@ -152,4 +152,9 @@
         }
         return false;
     }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        // No op since nextFrame flushes by default
+    }
 }