Minor changes based on Zack's code review.

git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_lsm_tree@2942 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java b/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java
index 13cf23a..0204833 100644
--- a/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java
+++ b/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java
@@ -16,7 +16,6 @@
 package edu.uci.ics.hyracks.storage.am.lsm.btree.impls;
 
 import java.util.ListIterator;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
@@ -50,7 +49,6 @@
     private boolean includeMemComponent;
     private int numBTrees;
     private IIndexAccessor[] bTreeAccessors;
-    private AtomicInteger searcherRefCount;
     private ILSMHarness lsmHarness;
     private boolean nextHasBeenCalled;
     private boolean foundTuple;
@@ -72,6 +70,7 @@
             bTreeAccessors[i].search(rangeCursors[i], predicate);
             if (rangeCursors[i].hasNext()) {
                 rangeCursors[i].next();
+                // We use the predicate's to lock the key instead of the tuple that we get from cursor to avoid copying the tuple when we do the "unlatch dance"
                 if (reconciled || searchCallback.proceed(predicate.getLowKey())) {
                     // if proceed is successful, then there's no need for doing the "unlatch dance"
                     if (((ILSMTreeTupleReference) rangeCursors[i].getTuple()).isAntimatter()) {
@@ -129,9 +128,6 @@
         rangeCursors = null;
         nextHasBeenCalled = false;
         foundTuple = false;
-        if (searcherRefCount != null) {
-            lsmHarness.endSearch(opCtx);
-        }
     }
 
     @Override
diff --git a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java
index 9fc351a..13f7465 100644
--- a/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java
+++ b/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java
@@ -18,7 +18,6 @@
 import java.util.Comparator;
 import java.util.List;
 import java.util.PriorityQueue;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
@@ -41,7 +40,6 @@
     protected MultiComparator cmp;
     protected boolean needPush;
     protected boolean includeMemComponent;
-    protected AtomicInteger searcherRefCount;
     protected ILSMHarness lsmHarness;
     protected final ILSMIndexOperationContext opCtx;
 
@@ -81,10 +79,6 @@
             }
         }
         rangeCursors = null;
-
-        if (searcherRefCount != null) {
-            lsmHarness.endSearch(opCtx);
-        }
     }
 
     @Override
diff --git a/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java b/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java
index 289c904..5a72f29 100644
--- a/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java
+++ b/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java
@@ -1,7 +1,6 @@
 package edu.uci.ics.hyracks.storage.am.lsm.rtree.impls;

 

 import java.util.List;

-import java.util.concurrent.atomic.AtomicInteger;

 

 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;

 import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;

@@ -36,7 +35,6 @@
     protected SearchPredicate rtreeSearchPredicate;

     protected RangePredicate btreeRangePredicate;

     protected ITupleReference frameTuple;

-    protected AtomicInteger searcherRefCount;

     protected boolean includeMemRTree;

     protected ILSMHarness lsmHarness;

     protected boolean foundNext;