Allowed the LSM-RTree to use on in-memory buffer cache for both the r-tree and b-tree
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_lsm_tree@975 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryBufferCache.java b/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryBufferCache.java
index 72ab9c4..25891dc 100644
--- a/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryBufferCache.java
+++ b/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryBufferCache.java
@@ -16,7 +16,7 @@
private final int pageSize;
private final int numPages;
- private final CachedPage[] cachedPages;
+ protected final CachedPage[] cachedPages;
//Constructor
public InMemoryBufferCache(ICacheMemoryAllocator allocator, int pageSize, int numPages){
diff --git a/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryFreePageManager.java b/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryFreePageManager.java
index 1f43bc8..5bafedf 100644
--- a/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryFreePageManager.java
+++ b/hyracks-storage-am-lsmtree-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/common/impls/InMemoryFreePageManager.java
@@ -6,81 +6,79 @@
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
import edu.uci.ics.hyracks.storage.am.common.api.PageAllocationException;
-public class InMemoryFreePageManager implements IFreePageManager{
- private final int maxCapacity;
- private int currentCapacity;
- private final ITreeIndexMetaDataFrameFactory metaDataFrameFactory;
-
- public InMemoryFreePageManager(int maxCapacity, ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
- this.maxCapacity = maxCapacity-1; // Since the range of CacheArray in InMemoryBufferCache is 0 ~ maxCapacity-1
- currentCapacity = 1;
- this.metaDataFrameFactory = metaDataFrameFactory;
- }
+public class InMemoryFreePageManager implements IFreePageManager {
+ private final int maxCapacity;
+ protected int currentCapacity;
+ private final ITreeIndexMetaDataFrameFactory metaDataFrameFactory;
- public int getCurrentCapacity() {
- return currentCapacity;
- }
-
- @Override
- public synchronized int getFreePage(ITreeIndexMetaDataFrame metaFrame)
- throws HyracksDataException, PageAllocationException {
-
- if(currentCapacity == maxCapacity) {
- throw new PageAllocationException("In-mem tree capacity reaches max capacity");
- }
- currentCapacity++;
- return currentCapacity;
- }
-
+ public InMemoryFreePageManager(int maxCapacity, ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
+ this.maxCapacity = maxCapacity - 1; // Since the range of CacheArray in
+ // InMemoryBufferCache is 0 ~
+ // maxCapacity-1
+ currentCapacity = 1;
+ this.metaDataFrameFactory = metaDataFrameFactory;
+ }
- @Override
- public void addFreePage(ITreeIndexMetaDataFrame metaFrame, int freePage)
- throws HyracksDataException {
- System.out.println("InMemoryFreePageManager.addFreePage()");
- }
+ public int getCurrentCapacity() {
+ return currentCapacity;
+ }
- @Override
- public int getMaxPage(ITreeIndexMetaDataFrame metaFrame)
- throws HyracksDataException {
- return currentCapacity;
- }
+ @Override
+ public synchronized int getFreePage(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException,
+ PageAllocationException {
- @Override
- public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage)
- throws HyracksDataException {
- currentCapacity = 1;
- }
+ if (currentCapacity == maxCapacity) {
+ throw new PageAllocationException("In-mem tree capacity reaches max capacity");
+ }
+ currentCapacity++;
+ return currentCapacity;
+ }
- @Override
- public ITreeIndexMetaDataFrameFactory getMetaDataFrameFactory() {
- return metaDataFrameFactory;
- }
+ @Override
+ public void addFreePage(ITreeIndexMetaDataFrame metaFrame, int freePage) throws HyracksDataException {
+ System.out.println("InMemoryFreePageManager.addFreePage()");
+ }
- @Override
- public byte getMetaPageLevelIndicator() {
- System.out.println("InMemoryFreePageManager.getMetaPageLevelIndicator()");
- return 0;
- }
+ @Override
+ public int getMaxPage(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException {
+ return currentCapacity;
+ }
- @Override
- public byte getFreePageLevelIndicator() {
- System.out.println("InMemoryFreePageManager.getFreePageLevelIndicator()");
- return 0;
- }
+ @Override
+ public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage) throws HyracksDataException {
+ currentCapacity = 1;
+ }
- @Override
- public boolean isMetaPage(ITreeIndexMetaDataFrame metaFrame) {
- System.out.println("InMemoryFreePageManager.isMetaPage()");
- return false;
- }
+ @Override
+ public ITreeIndexMetaDataFrameFactory getMetaDataFrameFactory() {
+ return metaDataFrameFactory;
+ }
- @Override
- public boolean isFreePage(ITreeIndexMetaDataFrame metaFrame) {
- System.out.println("InMemoryFreePageManager.isFreePage()");
- return false;
- }
-
- public void reset(){
- currentCapacity = 1;
- }
+ @Override
+ public byte getMetaPageLevelIndicator() {
+ System.out.println("InMemoryFreePageManager.getMetaPageLevelIndicator()");
+ return 0;
+ }
+
+ @Override
+ public byte getFreePageLevelIndicator() {
+ System.out.println("InMemoryFreePageManager.getFreePageLevelIndicator()");
+ return 0;
+ }
+
+ @Override
+ public boolean isMetaPage(ITreeIndexMetaDataFrame metaFrame) {
+ System.out.println("InMemoryFreePageManager.isMetaPage()");
+ return false;
+ }
+
+ @Override
+ public boolean isFreePage(ITreeIndexMetaDataFrame metaFrame) {
+ System.out.println("InMemoryFreePageManager.isFreePage()");
+ return false;
+ }
+
+ public void reset() {
+ currentCapacity = 1;
+ }
}
diff --git a/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTree.java b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTree.java
index 4583bdc..7fd915f 100644
--- a/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTree.java
+++ b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTree.java
@@ -43,8 +43,7 @@
private int btreeFileId;
private boolean created;
- private final IFreePageManager rtreeMemFreePageManager;
- private final IFreePageManager btreeMemFreePageManager;
+ private final IFreePageManager memFreePageManager;
private final ITreeIndexFrameFactory rtreeInteriorFrameFactory;
private final ITreeIndexFrameFactory btreeInteriorFrameFactory;
private final ITreeIndexFrameFactory rtreeLeafFrameFactory;
@@ -63,8 +62,8 @@
private int threadReferenceCounter;
private boolean flushFlag;
- public LSMRTree(IBufferCache rtreeMemCache, IBufferCache btreeMemCache, IBufferCache bufferCache, int fieldCount, MultiComparator cmp,
- IFreePageManager rtreeMemFreePageManager, IFreePageManager btreeMemFreePageManager, ITreeIndexFrameFactory rtreeInteriorFrameFactory,
+ public LSMRTree(IBufferCache rtreeMemCache, IBufferCache bufferCache, int fieldCount, MultiComparator cmp,
+ IFreePageManager memFreePageManager, ITreeIndexFrameFactory rtreeInteriorFrameFactory,
ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory,
ITreeIndexFrameFactory btreeLeafFrameFactory, RTreeFactory rTreeFactory, BTreeFactory bTreeFactory,
IFileMapManager fileMapManager) {
@@ -74,8 +73,7 @@
this.btreeInteriorFrameFactory = btreeInteriorFrameFactory;
this.rtreeLeafFrameFactory = rtreeLeafFrameFactory;
this.btreeLeafFrameFactory = btreeLeafFrameFactory;
- this.rtreeMemFreePageManager = rtreeMemFreePageManager;
- this.btreeMemFreePageManager = btreeMemFreePageManager;
+ this.memFreePageManager = memFreePageManager;
this.rTreeFactory = rTreeFactory;
this.bTreeFactory = bTreeFactory;
this.inDiskRTreeList = new LinkedList<ITreeIndex>();
@@ -99,9 +97,9 @@
e.printStackTrace();
}
- memRTree = new RTree(rtreeMemCache, fieldCount, cmp, rtreeMemFreePageManager, rtreeInteriorFrameFactory,
+ memRTree = new RTree(rtreeMemCache, fieldCount, cmp, memFreePageManager, rtreeInteriorFrameFactory,
rtreeLeafFrameFactory);
- memBTree = new BTree(btreeMemCache, fieldCount, cmp, btreeMemFreePageManager, btreeInteriorFrameFactory,
+ memBTree = new BTree(rtreeMemCache, fieldCount, cmp, memFreePageManager, btreeInteriorFrameFactory,
btreeLeafFrameFactory);
}
@@ -227,7 +225,8 @@
// TODO: Close the RTree during cleanup.
inDiskRTree.open(newDiskRTreeId);
- // // BulkLoad the tuples from the in-memory tree into the new disk RTree.
+ // // BulkLoad the tuples from the in-memory tree into the new disk
+ // RTree.
IIndexBulkLoadContext rtreeBulkLoadCtx = inDiskRTree.beginBulkLoad(1.0f);
int i = 0;
@@ -244,8 +243,8 @@
inDiskRTree.endBulkLoad(rtreeBulkLoadCtx);
// scan the BTree
- ITreeIndexCursor btreeScanCursor = new BTreeRangeSearchCursor((IBTreeLeafFrame) btreeLeafFrameFactory.createFrame(),
- false);
+ ITreeIndexCursor btreeScanCursor = new BTreeRangeSearchCursor(
+ (IBTreeLeafFrame) btreeLeafFrameFactory.createFrame(), false);
RangePredicate nullPred = new RangePredicate(true, null, null, true, true, null, null);
ITreeIndexAccessor memBTreeAccessor = memBTree.createAccessor();
memBTreeAccessor.search(btreeScanCursor, nullPred);
@@ -295,8 +294,7 @@
}
public void resetInMemoryTrees() throws HyracksDataException {
- ((InMemoryFreePageManager) rtreeMemFreePageManager).reset();
- ((InMemoryFreePageManager) btreeMemFreePageManager).reset();
+ ((InMemoryFreePageManager) memFreePageManager).reset();
memRTree.create(rtreeFileId);
memBTree.create(btreeFileId);
}
@@ -459,10 +457,10 @@
return new LSMTreeOpContext(new LSMRTreeOpContext((RTree.RTreeAccessor) memRTree.createAccessor(),
(IRTreeLeafFrame) rtreeLeafFrameFactory.createFrame(),
- (IRTreeInteriorFrame) rtreeInteriorFrameFactory.createFrame(), rtreeMemFreePageManager
+ (IRTreeInteriorFrame) rtreeInteriorFrameFactory.createFrame(), memFreePageManager
.getMetaDataFrameFactory().createFrame(), 8), new LSMBTreeOpContext(
(BTree.BTreeAccessor) memBTree.createAccessor(), btreeLeafFrameFactory, btreeInteriorFrameFactory,
- btreeMemFreePageManager.getMetaDataFrameFactory().createFrame(), cmp));
+ memFreePageManager.getMetaDataFrameFactory().createFrame(), cmp));
}
private class LSMRTreeAccessor implements ITreeIndexAccessor {
diff --git a/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryBufferCache.java b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryBufferCache.java
new file mode 100644
index 0000000..85c73ae
--- /dev/null
+++ b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryBufferCache.java
@@ -0,0 +1,26 @@
+package edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls;
+
+import edu.uci.ics.hyracks.storage.am.lsmtree.common.impls.InMemoryBufferCache;
+import edu.uci.ics.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
+import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPage;
+import edu.uci.ics.hyracks.storage.common.file.BufferedFileHandle;
+
+public class LSMRTreeInMemoryBufferCache extends InMemoryBufferCache {
+
+ public LSMRTreeInMemoryBufferCache(ICacheMemoryAllocator allocator, int pageSize, int numPages) {
+ super(allocator, pageSize, numPages);
+ }
+
+ @Override
+ public ICachedPage pin(long dpid, boolean newPage) {
+ int pageId = BufferedFileHandle.getPageId(dpid);
+ int fileId = BufferedFileHandle.getFileId(dpid);
+
+ if (pageId == 0 || pageId == 1) {
+ return cachedPages[pageId + 2 * fileId];
+ } else {
+ return cachedPages[pageId];
+ }
+ }
+
+}
diff --git a/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryBufferCacheFactory.java b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryBufferCacheFactory.java
new file mode 100644
index 0000000..ed652d6
--- /dev/null
+++ b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryBufferCacheFactory.java
@@ -0,0 +1,26 @@
+package edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls;
+
+import edu.uci.ics.hyracks.storage.common.buffercache.HeapBufferAllocator;
+import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
+import edu.uci.ics.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
+
+public class LSMRTreeInMemoryBufferCacheFactory {
+
+ private IBufferCache bufferCache;
+ private final int pageSize;
+ private final int numPages;
+
+ public LSMRTreeInMemoryBufferCacheFactory(int pageSize, int numPages) {
+ this.pageSize = pageSize;
+ this.numPages = numPages;
+ bufferCache = null;
+ }
+
+ public synchronized IBufferCache createInMemoryBufferCache() {
+ if (bufferCache == null) {
+ ICacheMemoryAllocator allocator = new HeapBufferAllocator();
+ bufferCache = new LSMRTreeInMemoryBufferCache(allocator, pageSize, numPages);
+ }
+ return bufferCache;
+ }
+}
diff --git a/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryFreePageManager.java b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryFreePageManager.java
new file mode 100644
index 0000000..fe68f38
--- /dev/null
+++ b/hyracks-storage-am-lsmtree-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/impls/LSMRTreeInMemoryFreePageManager.java
@@ -0,0 +1,23 @@
+package edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls;
+
+import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
+import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
+import edu.uci.ics.hyracks.storage.am.lsmtree.common.impls.InMemoryFreePageManager;
+
+public class LSMRTreeInMemoryFreePageManager extends InMemoryFreePageManager {
+
+ public LSMRTreeInMemoryFreePageManager(int maxCapacity, ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
+ super(maxCapacity, metaDataFrameFactory);
+ currentCapacity = 3;
+ }
+
+ @Override
+ public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage) throws HyracksDataException {
+ currentCapacity = 3;
+ }
+
+ public void reset() {
+ currentCapacity = 3;
+ }
+}
diff --git a/hyracks-tests/hyracks-storage-am-lsmtree-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/LSMRTreeTest.java b/hyracks-tests/hyracks-storage-am-lsmtree-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/LSMRTreeTest.java
index 33349e0..55eed29 100644
--- a/hyracks-tests/hyracks-storage-am-lsmtree-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/LSMRTreeTest.java
+++ b/hyracks-tests/hyracks-storage-am-lsmtree-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsmtree/rtree/LSMRTreeTest.java
@@ -33,13 +33,12 @@
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
import edu.uci.ics.hyracks.storage.am.common.api.TreeIndexException;
import edu.uci.ics.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
import edu.uci.ics.hyracks.storage.am.lsmtree.common.impls.FreePageManagerFactory;
-import edu.uci.ics.hyracks.storage.am.lsmtree.common.impls.InMemoryBufferCacheFactory;
-import edu.uci.ics.hyracks.storage.am.lsmtree.common.impls.InMemoryFreePageManager;
import edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls.BTreeFactory;
import edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls.LSMRTree;
+import edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls.LSMRTreeInMemoryBufferCacheFactory;
+import edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls.LSMRTreeInMemoryFreePageManager;
import edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls.LSMTypeAwareTupleWriterFactory;
import edu.uci.ics.hyracks.storage.am.lsmtree.rtree.impls.RTreeFactory;
import edu.uci.ics.hyracks.storage.am.rtree.frames.RTreeNSMInteriorFrameFactory;
@@ -54,7 +53,7 @@
public class LSMRTreeTest extends AbstractLSMTreeTest {
private static final int PAGE_SIZE = 256;
- private static final int NUM_PAGES = 10000;
+ private static final int NUM_PAGES = 100;
private static final int MAX_OPEN_FILES = 100;
private static final int HYRACKS_FRAME_SIZE = 128;
private IHyracksTaskContext ctx = TestUtils.create(HYRACKS_FRAME_SIZE);
@@ -72,12 +71,9 @@
bufferCache.openFile(fileId);
// in memory
- InMemoryBufferCacheFactory rtreeInMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache rtreeMemBufferCache = rtreeInMemBufferCacheFactory.createInMemoryBufferCache();
-
- // in memory
- InMemoryBufferCacheFactory btreeInMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache btreeMemBufferCache = btreeInMemBufferCacheFactory.createInMemoryBufferCache();
+ LSMRTreeInMemoryBufferCacheFactory inMemBufferCacheFactory = new LSMRTreeInMemoryBufferCacheFactory(PAGE_SIZE,
+ NUM_PAGES);
+ IBufferCache memBufferCache = inMemBufferCacheFactory.createInMemoryBufferCache();
// declare keys
int keyFieldCount = 4;
@@ -117,8 +113,7 @@
ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
- IFreePageManager rtreeMemFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
- IFreePageManager btreeMemFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
+ IFreePageManager memFreePageManager = new LSMRTreeInMemoryFreePageManager(100, metaFrameFactory);
FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
@@ -127,9 +122,9 @@
BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
btreeInteriorFrameFactory, btreeLeafFrameFactory);
- LSMRTree lsmrtree = new LSMRTree(rtreeMemBufferCache, btreeMemBufferCache, bufferCache, fieldCount, cmp,
- rtreeMemFreePageManager, btreeMemFreePageManager, rtreeInteriorFrameFactory, btreeInteriorFrameFactory,
- rtreeLeafFrameFactory, btreeLeafFrameFactory, rTreeFactory, bTreeFactory, (IFileMapManager) fmp);
+ LSMRTree lsmrtree = new LSMRTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
+ rtreeInteriorFrameFactory, btreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeLeafFrameFactory,
+ rTreeFactory, bTreeFactory, (IFileMapManager) fmp);
lsmrtree.create(fileId);
lsmrtree.open(fileId);
@@ -240,10 +235,10 @@
tuple.reset(accessor, 0);
if (LOGGER.isLoggable(Level.INFO)) {
- //if (i % 1000 == 0) {
- LOGGER.info("DELETING " + i + " " + Math.min(p1x, p2x) + " " + Math.min(p1y, p2y) + " "
- + Math.max(p1x, p2x) + " " + Math.max(p1y, p2y));
- //}
+ // if (i % 1000 == 0) {
+ LOGGER.info("DELETING " + i + " " + Math.min(p1x, p2x) + " " + Math.min(p1y, p2y) + " "
+ + Math.max(p1x, p2x) + " " + Math.max(p1y, p2y));
+ // }
}
try {
@@ -256,8 +251,7 @@
lsmrtree.close();
bufferCache.closeFile(fileId);
- rtreeMemBufferCache.close();
- btreeMemBufferCache.close();
+ memBufferCache.close();
}
}