Make sure to close cursors whenever they are not needed anymore.
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_lsm_tree@2938 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 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;