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 f3a5c82..13cf23a 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
@@ -76,6 +76,7 @@
                     // if proceed is successful, then there's no need for doing the "unlatch dance"
                     if (((ILSMTreeTupleReference) rangeCursors[i].getTuple()).isAntimatter()) {
                         searchCallback.cancel(predicate.getLowKey());
+                        rangeCursors[i].close();
                         return false;
                     } else {
                         frameTuple = rangeCursors[i].getTuple();
@@ -90,21 +91,20 @@
                     reconciled = true;
 
                     // retraverse
-                    try {
-                        memBTreeAccessor.search(rangeCursors[i], predicate);
-                    } catch (IndexException e) {
-                        throw new HyracksDataException(e);
-                    }
+                    memBTreeAccessor.search(rangeCursors[i], predicate);
                     if (rangeCursors[i].hasNext()) {
                         rangeCursors[i].next();
                         if (((ILSMTreeTupleReference) rangeCursors[i].getTuple()).isAntimatter()) {
                             searchCallback.cancel(predicate.getLowKey());
+                            rangeCursors[i].close();
                             return false;
                         } else {
                             frameTuple = rangeCursors[i].getTuple();
                             foundTuple = true;
                             return true;
                         }
+                    } else {
+                        rangeCursors[i].close();
                     }
                 } else {
                     frameTuple = rangeCursors[i].getTuple();
@@ -112,6 +112,8 @@
                     foundTuple = true;
                     return true;
                 }
+            } else {
+                rangeCursors[i].close();
             }
         }
         return false;
