[NO ISSUE][OTH] Several LSM clean ups

Change-Id: Ic0dd73231f28d831cd0fd23bb514f5b39a632ab2
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17525
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Tested-by: Murtadha Hubail <mhubail@apache.org>
Integration-Tests: Murtadha Hubail <mhubail@apache.org>
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
index b5d1c79..91316dc 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
@@ -20,7 +20,6 @@
 package org.apache.hyracks.storage.am.lsm.btree.impls;
 
 import java.io.FilenameFilter;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -32,7 +31,6 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.io.IIOManager;
-import org.apache.hyracks.api.util.IoUtil;
 import org.apache.hyracks.storage.am.common.api.ITreeIndex;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexFileManager;
 import org.apache.hyracks.storage.am.lsm.common.impls.IndexComponentFileReference;
@@ -42,7 +40,7 @@
 
 public class LSMBTreeFileManager extends AbstractLSMIndexFileManager {
 
-    private static final FilenameFilter btreeFilter =
+    private static final FilenameFilter BTREE_FILTER =
             (dir, name) -> !name.startsWith(".") && name.endsWith(BTREE_SUFFIX);
     private final TreeIndexFactory<? extends ITreeIndex> btreeFactory;
     private final boolean hasBloomFilter;
@@ -62,7 +60,7 @@
 
     @Override
     public LSMComponentFileReferences getRelFlushFileReference() throws HyracksDataException {
-        String baseName = getNextComponentSequence(btreeFilter);
+        String baseName = getNextComponentSequence(BTREE_FILTER);
         return new LSMComponentFileReferences(getFileReference(baseName + DELIMITER + BTREE_SUFFIX), null,
                 hasBloomFilter ? getFileReference(baseName + DELIMITER + BLOOM_FILTER_SUFFIX) : null);
     }
@@ -79,11 +77,8 @@
         List<LSMComponentFileReferences> validFiles = new ArrayList<>();
         ArrayList<IndexComponentFileReference> allBTreeFiles = new ArrayList<>();
         ArrayList<IndexComponentFileReference> allBloomFilterFiles = new ArrayList<>();
-        // create transaction filter <to hide transaction files>
-        FilenameFilter transactionFilter = getTransactionFileFilter(false);
         // List of valid BTree files.
-        cleanupAndGetValidFilesInternal(getCompoundFilter(transactionFilter, btreeFilter), btreeFactory, allBTreeFiles,
-                btreeFactory.getBufferCache());
+        cleanupAndGetValidFilesInternal(BTREE_FILTER, btreeFactory, allBTreeFiles, btreeFactory.getBufferCache());
         HashSet<String> btreeFilesSet = new HashSet<>();
         for (IndexComponentFileReference cmpFileName : allBTreeFiles) {
             int index = cmpFileName.getFileName().lastIndexOf(DELIMITER);
@@ -91,8 +86,7 @@
         }
 
         if (hasBloomFilter) {
-            validateFiles(btreeFilesSet, allBloomFilterFiles, getCompoundFilter(transactionFilter, bloomFilterFilter),
-                    null, btreeFactory.getBufferCache());
+            validateFiles(btreeFilesSet, allBloomFilterFiles, BLOOM_FILTER_FILTER, null, btreeFactory.getBufferCache());
             // Sanity check.
             if (allBTreeFiles.size() != allBloomFilterFiles.size()) {
                 throw HyracksDataException.create(ErrorCode.UNEQUAL_NUM_FILTERS_TREES, baseDir);
@@ -100,12 +94,12 @@
         }
 
         // Trivial cases.
-        if (allBTreeFiles.isEmpty() || hasBloomFilter && allBloomFilterFiles.isEmpty()) {
+        if (allBTreeFiles.isEmpty()) {
             return validFiles;
         }
 
         // Special case: sorting is not required
-        if (allBTreeFiles.size() == 1 && (!hasBloomFilter || allBloomFilterFiles.size() == 1)) {
+        if (allBTreeFiles.size() == 1) {
             validFiles.add(new LSMComponentFileReferences(allBTreeFiles.get(0).getFileRef(), null,
                     hasBloomFilter ? allBloomFilterFiles.get(0).getFileRef() : null));
             return validFiles;
@@ -169,7 +163,7 @@
         }
         IndexComponentFileReference cmpBTreeFileName = null;
         IndexComponentFileReference cmpBloomFilterFileName = null;
-        while (btreeFileIter.hasNext() && (hasBloomFilter ? bloomFilterFileIter.hasNext() : true)) {
+        while (btreeFileIter.hasNext() && (!hasBloomFilter || bloomFilterFileIter.hasNext())) {
             cmpBTreeFileName = btreeFileIter.next();
             if (hasBloomFilter) {
                 cmpBloomFilterFileName = bloomFilterFileIter.next();
@@ -180,44 +174,4 @@
 
         return validFiles;
     }
-
-    @Override
-    public LSMComponentFileReferences getNewTransactionFileReference() throws IOException {
-        String sequence = getNextComponentSequence(btreeFilter);
-        // Create transaction lock file
-        IoUtil.create(baseDir.getChild(TXN_PREFIX + sequence));
-        String baseName = getNextComponentSequence(btreeFilter);
-        return new LSMComponentFileReferences(baseDir.getChild(baseName + DELIMITER + BTREE_SUFFIX), null,
-                baseDir.getChild(baseName + DELIMITER + BLOOM_FILTER_SUFFIX));
-    }
-
-    @Override
-    public LSMComponentFileReferences getTransactionFileReferenceForCommit() throws HyracksDataException {
-        FilenameFilter transactionFilter;
-        String[] files = baseDir.getFile().list(txnFileNameFilter);
-        if (files.length == 0) {
-            return null;
-        }
-        if (files.length != 1) {
-            throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir);
-        } else {
-            transactionFilter = getTransactionFileFilter(true);
-            FileReference txnFile = baseDir.getChild(files[0]);
-            // get the actual transaction files
-            files = baseDir.getFile().list(transactionFilter);
-            IoUtil.delete(txnFile);
-        }
-        FileReference bTreeFileRef = null;
-        FileReference bloomFilterFileRef = null;
-        for (String fileName : files) {
-            if (fileName.endsWith(BTREE_SUFFIX)) {
-                bTreeFileRef = baseDir.getChild(fileName);
-            } else if (fileName.endsWith(BLOOM_FILTER_SUFFIX)) {
-                bloomFilterFileRef = baseDir.getChild(fileName);
-            } else {
-                throw HyracksDataException.create(ErrorCode.UNRECOGNIZED_INDEX_COMPONENT_FILE, fileName);
-            }
-        }
-        return new LSMComponentFileReferences(bTreeFileRef, null, bloomFilterFileRef);
-    }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java
deleted file mode 100644
index e7b8bbd..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import java.util.List;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter;
-import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame;
-import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
-import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
-import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
-import org.apache.hyracks.storage.am.common.api.ILSMIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.LSMComponentType;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
-import org.apache.hyracks.storage.common.EnforcedIndexCursor;
-import org.apache.hyracks.storage.common.ICursorInitialState;
-import org.apache.hyracks.storage.common.IIndexAccessParameters;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-import org.apache.hyracks.storage.common.ISearchPredicate;
-import org.apache.hyracks.storage.common.MultiComparator;
-
-public abstract class LSMBTreeWithBuddyAbstractCursor extends EnforcedIndexCursor implements ILSMIndexCursor {
-
-    protected boolean open;
-    protected BTreeRangeSearchCursor[] btreeCursors;
-    protected BTreeRangeSearchCursor[] buddyBtreeCursors;
-    protected BTreeAccessor[] btreeAccessors;
-    protected BTreeAccessor[] buddyBtreeAccessors;
-    protected BloomFilter[] buddyBtreeBloomFilters;
-    protected MultiComparator btreeCmp;
-    protected MultiComparator buddyBtreeCmp;
-    protected int numberOfTrees;
-    protected RangePredicate btreeRangePredicate;
-    protected RangePredicate buddyBtreeRangePredicate;
-    protected ITupleReference frameTuple;
-    protected boolean includeMutableComponent;
-    protected ILSMHarness lsmHarness;
-    protected boolean foundNext;
-    protected final ILSMIndexOperationContext opCtx;
-    protected final IIndexAccessParameters iap;
-
-    protected final long[] hashes = BloomFilter.createHashArray();
-
-    protected List<ILSMComponent> operationalComponents;
-
-    public LSMBTreeWithBuddyAbstractCursor(ILSMIndexOperationContext opCtx, IIndexCursorStats stats) {
-        super();
-        this.opCtx = opCtx;
-        this.iap = IndexAccessParameters.createNoOpParams(stats);
-        buddyBtreeRangePredicate = new RangePredicate(null, null, true, true, null, null);
-    }
-
-    public ITreeIndexCursor getCursor(int cursorIndex) {
-        return btreeCursors[cursorIndex];
-    }
-
-    @Override
-    public void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
-
-        LSMBTreeWithBuddyCursorInitialState lsmInitialState = (LSMBTreeWithBuddyCursorInitialState) initialState;
-        btreeCmp = lsmInitialState.getBTreeCmp();
-        buddyBtreeCmp = lsmInitialState.getBuddyBTreeCmp();
-
-        operationalComponents = lsmInitialState.getOperationalComponents();
-        lsmHarness = lsmInitialState.getLSMHarness();
-        numberOfTrees = operationalComponents.size();
-
-        if (btreeCursors == null || btreeCursors.length != numberOfTrees) {
-            // need to re-use the following four instead of re-creating
-            btreeCursors = new BTreeRangeSearchCursor[numberOfTrees];
-            buddyBtreeCursors = new BTreeRangeSearchCursor[numberOfTrees];
-            btreeAccessors = new BTreeAccessor[numberOfTrees];
-            buddyBtreeAccessors = new BTreeAccessor[numberOfTrees];
-            buddyBtreeBloomFilters = new BloomFilter[numberOfTrees];
-        }
-
-        includeMutableComponent = false;
-
-        for (int i = 0; i < numberOfTrees; i++) {
-            ILSMComponent component = operationalComponents.get(i);
-            BTree btree;
-            BTree buddyBtree;
-            if (component.getType() == LSMComponentType.MEMORY) {
-                // This is not needed at the moment but is implemented anyway
-                includeMutableComponent = true;
-                // No need for a bloom filter for the in-memory BTree.
-                if (buddyBtreeCursors[i] == null) {
-                    buddyBtreeCursors[i] = new BTreeRangeSearchCursor(
-                            (IBTreeLeafFrame) lsmInitialState.getBuddyBTreeLeafFrameFactory().createFrame(), false);
-                } else {
-                    buddyBtreeCursors[i].close();
-                }
-                btree = ((LSMBTreeWithBuddyMemoryComponent) component).getIndex();
-                buddyBtree = ((LSMBTreeWithBuddyMemoryComponent) component).getBuddyIndex();
-                buddyBtreeBloomFilters[i] = null;
-            } else {
-                if (buddyBtreeCursors[i] == null) {
-                    buddyBtreeCursors[i] = new BTreeRangeSearchCursor(
-                            (IBTreeLeafFrame) lsmInitialState.getBuddyBTreeLeafFrameFactory().createFrame(), false);
-                } else {
-                    buddyBtreeCursors[i].close();
-                }
-                btree = ((LSMBTreeWithBuddyDiskComponent) component).getIndex();
-                buddyBtree = ((LSMBTreeWithBuddyDiskComponent) component).getBuddyIndex();
-                buddyBtreeBloomFilters[i] = ((LSMBTreeWithBuddyDiskComponent) component).getBloomFilter();
-            }
-            IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame();
-            if (btreeAccessors[i] == null) {
-                btreeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
-                btreeAccessors[i] = btree.createAccessor(iap);
-                buddyBtreeAccessors[i] = buddyBtree.createAccessor(iap);
-            } else {
-                btreeCursors[i].close();
-                btreeAccessors[i].reset(btree, iap);
-                buddyBtreeAccessors[i].reset(buddyBtree, iap);
-            }
-        }
-        btreeRangePredicate = (RangePredicate) searchPred;
-        buddyBtreeRangePredicate.reset(null, null, true, true, buddyBtreeCmp, buddyBtreeCmp);
-        open = true;
-    }
-
-    @Override
-    public void doDestroy() throws HyracksDataException {
-        if (!open) {
-            return;
-        }
-        try {
-            if (btreeCursors != null && buddyBtreeCursors != null) {
-                for (int i = 0; i < numberOfTrees; i++) {
-                    btreeCursors[i].destroy();
-                    buddyBtreeCursors[i].destroy();
-                }
-            }
-            btreeCursors = null;
-            buddyBtreeCursors = null;
-        } finally {
-            lsmHarness.endSearch(opCtx);
-        }
-        foundNext = false;
-        open = false;
-    }
-
-    @Override
-    public ITupleReference doGetTuple() {
-        return frameTuple;
-    }
-
-    @Override
-    public boolean getSearchOperationCallbackProceedResult() {
-        return false;
-    }
-
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java
deleted file mode 100644
index 1e98248..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import java.util.List;
-
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
-import org.apache.hyracks.storage.common.ICursorInitialState;
-import org.apache.hyracks.storage.common.ISearchOperationCallback;
-import org.apache.hyracks.storage.common.MultiComparator;
-import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-
-public class LSMBTreeWithBuddyCursorInitialState implements ICursorInitialState {
-    private final ITreeIndexFrameFactory btreeInteriorFrameFactory;
-    private final ITreeIndexFrameFactory btreeLeafFrameFactory;
-    private final ITreeIndexFrameFactory buddyBtreeLeafFrameFactory;
-    private MultiComparator btreeCmp;
-    private MultiComparator buddyBtreeCmp;
-    private final ILSMHarness lsmHarness;
-
-    private ISearchOperationCallback searchCallback;
-    private List<ILSMComponent> operationalComponents;
-
-    public LSMBTreeWithBuddyCursorInitialState(ITreeIndexFrameFactory btreeInteriorFrameFactory,
-            ITreeIndexFrameFactory btreeLeafFrameFactory, ITreeIndexFrameFactory buddyBtreeLeafFrameFactory,
-            ILSMHarness lsmHarness, MultiComparator btreeCmp, MultiComparator buddyBtreeCmp,
-            ISearchOperationCallback searchCallback, List<ILSMComponent> operationalComponents) {
-        this.btreeLeafFrameFactory = btreeLeafFrameFactory;
-        this.btreeInteriorFrameFactory = btreeInteriorFrameFactory;
-        this.buddyBtreeLeafFrameFactory = buddyBtreeLeafFrameFactory;
-        this.btreeCmp = btreeCmp;
-        this.buddyBtreeCmp = buddyBtreeCmp;
-        this.lsmHarness = lsmHarness;
-        this.searchCallback = searchCallback;
-        this.operationalComponents = operationalComponents;
-    }
-
-    public ITreeIndexFrameFactory getBTreeInteriorFrameFactory() {
-        return btreeInteriorFrameFactory;
-    }
-
-    public ITreeIndexFrameFactory getBTreeLeafFrameFactory() {
-        return btreeLeafFrameFactory;
-    }
-
-    public ITreeIndexFrameFactory getBuddyBTreeLeafFrameFactory() {
-        return buddyBtreeLeafFrameFactory;
-    }
-
-    public MultiComparator getBTreeCmp() {
-        return btreeCmp;
-    }
-
-    public MultiComparator getBuddyBTreeCmp() {
-        return buddyBtreeCmp;
-    }
-
-    public List<ILSMComponent> getOperationalComponents() {
-        return operationalComponents;
-    }
-
-    public ILSMHarness getLSMHarness() {
-        return lsmHarness;
-    }
-
-    @Override
-    public ICachedPage getPage() {
-        return null;
-    }
-
-    @Override
-    public void setPage(ICachedPage page) {
-    }
-
-    @Override
-    public ISearchOperationCallback getSearchOperationCallback() {
-        return searchCallback;
-    }
-
-    @Override
-    public void setSearchOperationCallback(ISearchOperationCallback searchCallback) {
-        this.searchCallback = searchCallback;
-    }
-
-    @Override
-    public MultiComparator getOriginalKeyComparator() {
-        return btreeCmp;
-    }
-
-    @Override
-    public void setOriginialKeyComparator(MultiComparator originalCmp) {
-        this.btreeCmp = originalCmp;
-    }
-
-    public void setOperationalComponents(List<ILSMComponent> operationalComponents) {
-        this.operationalComponents = operationalComponents;
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyDiskComponent.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyDiskComponent.java
deleted file mode 100644
index 1e9dade..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyDiskComponent.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import java.util.Set;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter;
-import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.lsm.common.api.AbstractLSMWithBuddyDiskComponent;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
-import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
-import org.apache.hyracks.storage.common.buffercache.IBufferCache;
-
-public class LSMBTreeWithBuddyDiskComponent extends AbstractLSMWithBuddyDiskComponent {
-    private final BTree btree;
-    private final BloomFilter bloomFilter;
-    private final BTree buddyBtree;
-
-    public LSMBTreeWithBuddyDiskComponent(AbstractLSMIndex lsmIndex, BTree btree, BTree buddyBtree,
-            BloomFilter bloomFilter, ILSMComponentFilter filter) {
-        super(lsmIndex, LSMBTreeDiskComponent.getMetadataPageManager(btree), filter);
-        this.btree = btree;
-        this.bloomFilter = bloomFilter;
-        this.buddyBtree = buddyBtree;
-    }
-
-    @Override
-    public BTree getBuddyIndex() {
-        return buddyBtree;
-    }
-
-    @Override
-    public long getComponentSize() {
-        return LSMBTreeDiskComponent.getComponentSize(btree)
-                + LSMBTreeWithBloomFilterDiskComponent.getComponentSize(bloomFilter)
-                + buddyBtree.getFileReference().getFile().length();
-    }
-
-    @Override
-    public Set<String> getLSMComponentPhysicalFiles() {
-        Set<String> files = LSMBTreeDiskComponent.getFiles(btree);
-        LSMBTreeWithBloomFilterDiskComponent.addFiles(files, bloomFilter);
-        files.add(buddyBtree.getFileReference().getFile().getAbsolutePath());
-        return files;
-    }
-
-    @Override
-    public void validate() throws HyracksDataException {
-        throw new UnsupportedOperationException("Validation not implemented for LSM B-Trees with Buddy B-Tree.");
-    }
-
-    @Override
-    public int getFileReferenceCount() {
-        return LSMBTreeDiskComponent.getFileReferenceCount(btree);
-    }
-
-    @Override
-    public BTree getMetadataHolder() {
-        return btree;
-    }
-
-    @Override
-    public BTree getIndex() {
-        return btree;
-    }
-
-    @Override
-    public BloomFilter getBloomFilter() {
-        return bloomFilter;
-    }
-
-    @Override
-    public IBufferCache getBloomFilterBufferCache() {
-        return getMetadataHolder().getBufferCache();
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyDiskComponentFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyDiskComponentFactory.java
deleted file mode 100644
index bfa2314..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyDiskComponentFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory;
-import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.lsm.common.api.IComponentFilterHelper;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory;
-import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory;
-
-public class LSMBTreeWithBuddyDiskComponentFactory implements ILSMDiskComponentFactory {
-
-    protected final TreeIndexFactory<BTree> btreeFactory;
-    protected final IComponentFilterHelper filterHelper;
-    protected final BloomFilterFactory bloomFilterFactory;
-    protected final TreeIndexFactory<BTree> buddyBtreeFactory;
-
-    public LSMBTreeWithBuddyDiskComponentFactory(TreeIndexFactory<BTree> btreeFactory,
-            TreeIndexFactory<BTree> buddyBtreeFactory, BloomFilterFactory bloomFilterFactory,
-            IComponentFilterHelper filterHelper) {
-        this.btreeFactory = btreeFactory;
-        this.filterHelper = filterHelper;
-        this.bloomFilterFactory = bloomFilterFactory;
-        this.buddyBtreeFactory = buddyBtreeFactory;
-    }
-
-    public int[] getBloomFilterKeyFields() {
-        return bloomFilterFactory == null ? null : bloomFilterFactory.getBloomFilterKeyFields();
-    }
-
-    @Override
-    public LSMBTreeWithBuddyDiskComponent createComponent(AbstractLSMIndex lsmIndex, LSMComponentFileReferences cfr)
-            throws HyracksDataException {
-        return new LSMBTreeWithBuddyDiskComponent(lsmIndex,
-                btreeFactory.createIndexInstance(cfr.getInsertIndexFileReference()),
-                buddyBtreeFactory.createIndexInstance(cfr.getDeleteIndexFileReference()),
-                bloomFilterFactory.createBloomFiltertInstance(cfr.getBloomFilterFileReference()),
-                filterHelper == null ? null : filterHelper.createFilter());
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java
deleted file mode 100644
index 81e6d10..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.hyracks.api.exceptions.ErrorCode;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.api.io.IIOManager;
-import org.apache.hyracks.api.util.IoUtil;
-import org.apache.hyracks.storage.am.common.api.ITreeIndex;
-import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexFileManager;
-import org.apache.hyracks.storage.am.lsm.common.impls.IndexComponentFileReference;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory;
-
-public class LSMBTreeWithBuddyFileManager extends AbstractLSMIndexFileManager {
-
-    private final TreeIndexFactory<? extends ITreeIndex> btreeFactory;
-    private final TreeIndexFactory<? extends ITreeIndex> buddyBtreeFactory;
-
-    private static FilenameFilter btreeFilter = (dir, name) -> !name.startsWith(".") && name.endsWith(BTREE_SUFFIX);
-
-    private static FilenameFilter buddyBtreeFilter =
-            (dir, name) -> !name.startsWith(".") && name.endsWith(DELETE_TREE_SUFFIX);
-
-    public LSMBTreeWithBuddyFileManager(IIOManager ioManager, FileReference file,
-            TreeIndexFactory<? extends ITreeIndex> btreeFactory,
-            TreeIndexFactory<? extends ITreeIndex> buddyBtreeFactory) {
-        super(ioManager, file, null);
-        this.buddyBtreeFactory = buddyBtreeFactory;
-        this.btreeFactory = btreeFactory;
-    }
-
-    @Override
-    public LSMComponentFileReferences getRelFlushFileReference() throws HyracksDataException {
-        String baseName = getNextComponentSequence(btreeFilter);
-        return new LSMComponentFileReferences(baseDir.getChild(baseName + DELIMITER + BTREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + DELETE_TREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + BLOOM_FILTER_SUFFIX));
-    }
-
-    @Override
-    public LSMComponentFileReferences getRelMergeFileReference(String firstFileName, String lastFileName) {
-        final String baseName = IndexComponentFileReference.getMergeSequence(firstFileName, lastFileName);
-        return new LSMComponentFileReferences(baseDir.getChild(baseName + DELIMITER + BTREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + DELETE_TREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + BLOOM_FILTER_SUFFIX));
-    }
-
-    @Override
-    public List<LSMComponentFileReferences> cleanupAndGetValidFiles() throws HyracksDataException {
-        List<LSMComponentFileReferences> validFiles = new ArrayList<>();
-        ArrayList<IndexComponentFileReference> allBTreeFiles = new ArrayList<>();
-        ArrayList<IndexComponentFileReference> allBuddyBTreeFiles = new ArrayList<>();
-        ArrayList<IndexComponentFileReference> allBloomFilterFiles = new ArrayList<>();
-        // Create transaction file filter
-        FilenameFilter transactionFilefilter = getTransactionFileFilter(false);
-        // Gather files.
-        cleanupAndGetValidFilesInternal(getCompoundFilter(btreeFilter, transactionFilefilter), btreeFactory,
-                allBTreeFiles, btreeFactory.getBufferCache());
-        HashSet<String> btreeFilesSet = new HashSet<>();
-        for (IndexComponentFileReference cmpFileName : allBTreeFiles) {
-            btreeFilesSet.add(cmpFileName.getSequence());
-        }
-        validateFiles(btreeFilesSet, allBuddyBTreeFiles, getCompoundFilter(buddyBtreeFilter, transactionFilefilter),
-                buddyBtreeFactory, btreeFactory.getBufferCache());
-        validateFiles(btreeFilesSet, allBloomFilterFiles, getCompoundFilter(bloomFilterFilter, transactionFilefilter),
-                null, btreeFactory.getBufferCache());
-        // Sanity check.
-        if (allBTreeFiles.size() != allBuddyBTreeFiles.size() || allBTreeFiles.size() != allBloomFilterFiles.size()) {
-            throw HyracksDataException.create(ErrorCode.UNEQUAL_NUM_FILTERS_TREES, baseDir);
-        }
-        // Trivial cases.
-        if (allBTreeFiles.isEmpty() || allBuddyBTreeFiles.isEmpty() || allBloomFilterFiles.isEmpty()) {
-            return validFiles;
-        }
-        if (allBTreeFiles.size() == 1 && allBuddyBTreeFiles.size() == 1 && allBloomFilterFiles.size() == 1) {
-            validFiles.add(new LSMComponentFileReferences(allBTreeFiles.get(0).getFileRef(),
-                    allBuddyBTreeFiles.get(0).getFileRef(), allBloomFilterFiles.get(0).getFileRef()));
-            return validFiles;
-        }
-
-        // Sorts files names from earliest to latest sequence.
-        Collections.sort(allBTreeFiles);
-        Collections.sort(allBuddyBTreeFiles);
-        Collections.sort(allBloomFilterFiles);
-
-        List<IndexComponentFileReference> validComparableBTreeFiles = new ArrayList<>();
-        IndexComponentFileReference lastBTree = allBTreeFiles.get(0);
-        validComparableBTreeFiles.add(lastBTree);
-
-        List<IndexComponentFileReference> validComparableBuddyBTreeFiles = new ArrayList<>();
-        IndexComponentFileReference lastBuddyBTree = allBuddyBTreeFiles.get(0);
-        validComparableBuddyBTreeFiles.add(lastBuddyBTree);
-
-        List<IndexComponentFileReference> validComparableBloomFilterFiles = new ArrayList<>();
-        IndexComponentFileReference lastBloomFilter = allBloomFilterFiles.get(0);
-        validComparableBloomFilterFiles.add(lastBloomFilter);
-
-        for (int i = 1; i < allBTreeFiles.size(); i++) {
-            IndexComponentFileReference currentBTree = allBTreeFiles.get(i);
-            IndexComponentFileReference currentBuddyBTree = allBuddyBTreeFiles.get(i);
-            IndexComponentFileReference currentBloomFilter = allBloomFilterFiles.get(i);
-            // Current start sequence is greater than last stop sequence
-            if (currentBTree.isMoreRecentThan(lastBTree) && currentBuddyBTree.isMoreRecentThan(lastBuddyBTree)
-                    && currentBloomFilter.isMoreRecentThan(lastBloomFilter)) {
-                validComparableBTreeFiles.add(currentBTree);
-                validComparableBuddyBTreeFiles.add(currentBuddyBTree);
-                validComparableBloomFilterFiles.add(currentBloomFilter);
-                lastBTree = currentBTree;
-                lastBuddyBTree = currentBuddyBTree;
-                lastBloomFilter = currentBloomFilter;
-            } else if (currentBTree.isWithin(lastBTree) && currentBuddyBTree.isWithin(lastBuddyBTree)
-                    && currentBloomFilter.isWithin(lastBloomFilter)) {
-                // Invalid files are completely contained in last sequence.
-                delete(treeFactory.getBufferCache(), currentBTree.getFileRef());
-                delete(treeFactory.getBufferCache(), currentBuddyBTree.getFileRef());
-                delete(treeFactory.getBufferCache(), currentBloomFilter.getFileRef());
-            } else {
-                // This scenario should not be possible.
-                throw HyracksDataException.create(ErrorCode.FOUND_OVERLAPPING_LSM_FILES, baseDir);
-            }
-        }
-
-        // Sort valid files in reverse lexicographical order, such that newer
-        // files come first.
-        validComparableBTreeFiles.sort(recencyCmp);
-        validComparableBuddyBTreeFiles.sort(recencyCmp);
-        validComparableBloomFilterFiles.sort(recencyCmp);
-
-        Iterator<IndexComponentFileReference> btreeFileIter = validComparableBTreeFiles.iterator();
-        Iterator<IndexComponentFileReference> buddyBtreeFileIter = validComparableBuddyBTreeFiles.iterator();
-        Iterator<IndexComponentFileReference> bloomFilterFileIter = validComparableBloomFilterFiles.iterator();
-        while (btreeFileIter.hasNext() && buddyBtreeFileIter.hasNext()) {
-            IndexComponentFileReference cmpBTreeFileName = btreeFileIter.next();
-            IndexComponentFileReference cmpBuddyBTreeFileName = buddyBtreeFileIter.next();
-            IndexComponentFileReference cmpBloomFilterFileName = bloomFilterFileIter.next();
-            validFiles.add(new LSMComponentFileReferences(cmpBTreeFileName.getFileRef(),
-                    cmpBuddyBTreeFileName.getFileRef(), cmpBloomFilterFileName.getFileRef()));
-        }
-
-        return validFiles;
-    }
-
-    @Override
-    public LSMComponentFileReferences getNewTransactionFileReference() throws IOException {
-        // Create transaction lock file
-        String baseName = getNextComponentSequence(btreeFilter);
-        Files.createFile(Paths.get(baseDir + TXN_PREFIX + baseName));
-        return new LSMComponentFileReferences(baseDir.getChild(baseName + DELIMITER + BTREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + DELETE_TREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + BLOOM_FILTER_SUFFIX));
-    }
-
-    @Override
-    public LSMComponentFileReferences getTransactionFileReferenceForCommit() throws HyracksDataException {
-        FilenameFilter transactionFilter;
-        String[] files = baseDir.getFile().list(txnFileNameFilter);
-        if (files.length == 0) {
-            return null;
-        }
-        if (files.length != 1) {
-            throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir);
-        } else {
-            transactionFilter = getTransactionFileFilter(true);
-            // get the actual transaction files
-            files = baseDir.getFile().list(transactionFilter);
-            if (files.length < 3) {
-                throw HyracksDataException.create(ErrorCode.UNEQUAL_NUM_FILTERS_TREES, baseDir);
-            }
-            IoUtil.delete(baseDir.getChild(files[0]));
-        }
-        FileReference bTreeFileRef = null;
-        FileReference buddyBTreeFileRef = null;
-        FileReference bloomFilterFileRef = null;
-        for (String fileName : files) {
-            if (fileName.endsWith(BTREE_SUFFIX)) {
-                bTreeFileRef = baseDir.getChild(fileName);
-            } else if (fileName.endsWith(DELETE_TREE_SUFFIX)) {
-                buddyBTreeFileRef = baseDir.getChild(fileName);
-            } else if (fileName.endsWith(BLOOM_FILTER_SUFFIX)) {
-                bloomFilterFileRef = baseDir.getChild(fileName);
-            } else {
-                throw HyracksDataException.create(ErrorCode.UNRECOGNIZED_INDEX_COMPONENT_FILE, fileName);
-            }
-        }
-
-        return new LSMComponentFileReferences(bTreeFileRef, buddyBTreeFileRef, bloomFilterFileRef);
-    }
-
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
deleted file mode 100644
index feed07e..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
-import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
-import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
-import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMWithBuddyMemoryComponent;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-
-/*
- * This class is also not needed at the moment but is implemented anyway
- */
-public class LSMBTreeWithBuddyMemoryComponent extends AbstractLSMWithBuddyMemoryComponent {
-
-    private final BTree btree;
-    private final BTree buddyBtree;
-
-    public LSMBTreeWithBuddyMemoryComponent(AbstractLSMIndex lsmIndex, BTree btree, BTree buddyBtree,
-            IVirtualBufferCache vbc, ILSMComponentFilter filter) {
-        super(lsmIndex, vbc, filter);
-        this.btree = btree;
-        this.buddyBtree = buddyBtree;
-    }
-
-    @Override
-    public BTree getIndex() {
-        return btree;
-    }
-
-    @Override
-    public BTree getBuddyIndex() {
-        return buddyBtree;
-    }
-
-    @Override
-    public void validate() throws HyracksDataException {
-        throw new UnsupportedOperationException("Validation not implemented for LSM B-Trees with Buddy B-Tree.");
-    }
-
-    @Override
-    public LSMComponentFileReferences getComponentFileRefs() {
-        return new LSMComponentFileReferences(btree.getFileReference(), buddyBtree.getFileReference(), null);
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMergeOperation.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMergeOperation.java
deleted file mode 100644
index 3876afa..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMergeOperation.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-import org.apache.hyracks.storage.am.lsm.common.impls.MergeOperation;
-import org.apache.hyracks.storage.common.IIndexCursor;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-
-public class LSMBTreeWithBuddyMergeOperation extends MergeOperation {
-
-    private final FileReference buddyBtreeMergeTarget;
-    private final FileReference bloomFilterMergeTarget;
-    private final boolean keepDeletedTuples;
-
-    public LSMBTreeWithBuddyMergeOperation(ILSMIndexAccessor accessor, IIndexCursor cursor, IIndexCursorStats stats,
-            FileReference target, FileReference buddyBtreeMergeTarget, FileReference bloomFilterMergeTarget,
-            ILSMIOOperationCallback callback, String indexIdentifier, boolean keepDeletedTuples) {
-        super(accessor, target, callback, indexIdentifier, cursor, stats);
-        this.buddyBtreeMergeTarget = buddyBtreeMergeTarget;
-        this.bloomFilterMergeTarget = bloomFilterMergeTarget;
-        this.keepDeletedTuples = keepDeletedTuples;
-    }
-
-    public FileReference getBuddyBTreeTarget() {
-        return buddyBtreeMergeTarget;
-    }
-
-    public FileReference getBloomFilterTarget() {
-        return bloomFilterMergeTarget;
-    }
-
-    public boolean isKeepDeletedTuples() {
-        return keepDeletedTuples;
-    }
-
-    @Override
-    public LSMComponentFileReferences getComponentFiles() {
-        return new LSMComponentFileReferences(target, buddyBtreeMergeTarget, bloomFilterMergeTarget);
-    }
-
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
deleted file mode 100644
index ac3c8ae7..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.dataflow.common.data.accessors.PermutingTupleReference;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
-import org.apache.hyracks.storage.common.ICursorInitialState;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-import org.apache.hyracks.storage.common.ISearchPredicate;
-import org.apache.hyracks.storage.common.NoOpIndexCursorStats;
-
-public class LSMBTreeWithBuddySearchCursor extends LSMBTreeWithBuddyAbstractCursor {
-    private int currentCursor;
-    private final PermutingTupleReference buddyBTreeTuple;
-
-    public LSMBTreeWithBuddySearchCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields) {
-        this(opCtx, buddyBTreeFields, NoOpIndexCursorStats.INSTANCE);
-    }
-
-    public LSMBTreeWithBuddySearchCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields,
-            IIndexCursorStats stats) {
-        super(opCtx, stats);
-        currentCursor = 0;
-        this.buddyBTreeTuple = new PermutingTupleReference(buddyBTreeFields);
-    }
-
-    @Override
-    public void doDestroy() throws HyracksDataException {
-        super.doDestroy();
-        currentCursor = 0;
-    }
-
-    @Override
-    public void doClose() throws HyracksDataException {
-        if (!open) {
-            return;
-        }
-
-        currentCursor = 0;
-        foundNext = false;
-        try {
-            for (int i = 0; i < numberOfTrees; i++) {
-                btreeCursors[i].close();
-                buddyBtreeCursors[i].close();
-            }
-            btreeCursors = null;
-            buddyBtreeCursors = null;
-        } finally {
-            lsmHarness.endSearch(opCtx);
-        }
-    }
-
-    private void searchNextCursor() throws HyracksDataException {
-        if (currentCursor < numberOfTrees) {
-            btreeCursors[currentCursor].close();
-            btreeAccessors[currentCursor].search(btreeCursors[currentCursor], btreeRangePredicate);
-        }
-    }
-
-    @Override
-    public boolean doHasNext() throws HyracksDataException {
-        if (foundNext) {
-            return true;
-        }
-        while (currentCursor < numberOfTrees) {
-            while (btreeCursors[currentCursor].hasNext()) {
-                btreeCursors[currentCursor].next();
-                ITupleReference currentTuple = btreeCursors[currentCursor].getTuple();
-                buddyBTreeTuple.reset(btreeCursors[currentCursor].getTuple());
-                boolean killerTupleFound = false;
-                for (int i = 0; i < currentCursor && !killerTupleFound; i++) {
-                    if (buddyBtreeBloomFilters[i] != null
-                            && !buddyBtreeBloomFilters[i].contains(buddyBTreeTuple, hashes)) {
-                        continue;
-                    }
-                    buddyBtreeCursors[i].close();
-                    buddyBtreeRangePredicate.setHighKey(buddyBTreeTuple, true);
-                    buddyBtreeRangePredicate.setLowKey(buddyBTreeTuple, true);
-                    buddyBtreeAccessors[i].search(buddyBtreeCursors[i], buddyBtreeRangePredicate);
-                    try {
-                        if (buddyBtreeCursors[i].hasNext()) {
-                            killerTupleFound = true;
-                        }
-                    } finally {
-                        buddyBtreeCursors[i].close();
-                    }
-                }
-                if (!killerTupleFound) {
-                    frameTuple = currentTuple;
-                    foundNext = true;
-                    return true;
-                }
-            }
-            btreeCursors[currentCursor].close();
-            currentCursor++;
-            searchNextCursor();
-        }
-        return false;
-    }
-
-    @Override
-    public void doNext() throws HyracksDataException {
-        foundNext = false;
-    }
-
-    @Override
-    public ITupleReference getFilterMinTuple() {
-        ILSMComponentFilter filter = getFilter();
-        return filter == null ? null : filter.getMinTuple();
-    }
-
-    @Override
-    public ITupleReference getFilterMaxTuple() {
-        ILSMComponentFilter filter = getFilter();
-        return filter == null ? null : filter.getMaxTuple();
-    }
-
-    private ILSMComponentFilter getFilter() {
-        if (currentCursor < 0) {
-            return null;
-        }
-        return operationalComponents.get(currentCursor).getLSMComponentFilter();
-    }
-
-    @Override
-    public void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
-        super.doOpen(initialState, searchPred);
-        searchNextCursor();
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java
deleted file mode 100644
index ce47589..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.dataflow.common.data.accessors.PermutingTupleReference;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
-import org.apache.hyracks.storage.common.ICursorInitialState;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-import org.apache.hyracks.storage.common.ISearchPredicate;
-import org.apache.hyracks.storage.common.util.IndexCursorUtils;
-
-public class LSMBTreeWithBuddySortedCursor extends LSMBTreeWithBuddyAbstractCursor {
-    // TODO: This class can be removed and instead use a search cursor that uses
-    // a logic similar
-    // to the one in LSMRTreeWithAntiMatterTuplesSearchCursor
-    // currently, this cursor is only used when doing merge operations.
-    private boolean[] depletedBtreeCursors;
-    private int foundIn = -1;
-    private PermutingTupleReference buddyBtreeTuple;
-
-    public LSMBTreeWithBuddySortedCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields,
-            IIndexCursorStats stats) throws HyracksDataException {
-        super(opCtx, stats);
-        this.buddyBtreeTuple = new PermutingTupleReference(buddyBTreeFields);
-        close();
-    }
-
-    public ILSMIndexOperationContext getOpCtx() {
-        return opCtx;
-    }
-
-    @Override
-    public void doClose() throws HyracksDataException {
-        depletedBtreeCursors = new boolean[numberOfTrees];
-        foundNext = false;
-        try {
-            for (int i = 0; i < numberOfTrees; i++) {
-                btreeCursors[i].close();
-                btreeAccessors[i].search(btreeCursors[i], btreeRangePredicate);
-                if (btreeCursors[i].hasNext()) {
-                    btreeCursors[i].next();
-                } else {
-                    depletedBtreeCursors[i] = true;
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new HyracksDataException("error while reseting the btrees of the lsm btree with buddy btree", e);
-        } finally {
-            if (open) {
-                lsmHarness.endSearch(opCtx);
-            }
-        }
-    }
-
-    @Override
-    public ITupleReference getFilterMinTuple() {
-        ILSMComponentFilter filter = getFilter();
-        return filter == null ? null : filter.getMinTuple();
-    }
-
-    @Override
-    public ITupleReference getFilterMaxTuple() {
-        ILSMComponentFilter filter = getFilter();
-        return filter == null ? null : filter.getMaxTuple();
-    }
-
-    private ILSMComponentFilter getFilter() {
-        if (foundIn < 0) {
-            return null;
-        }
-        return operationalComponents.get(foundIn).getLSMComponentFilter();
-    }
-
-    @Override
-    public boolean doHasNext() throws HyracksDataException {
-        while (!foundNext) {
-            frameTuple = null;
-
-            if (foundIn != -1) {
-                if (btreeCursors[foundIn].hasNext()) {
-                    btreeCursors[foundIn].next();
-                } else {
-                    depletedBtreeCursors[foundIn] = true;
-                }
-            }
-
-            foundIn = -1;
-            for (int i = 0; i < numberOfTrees; i++) {
-                if (depletedBtreeCursors[i]) {
-                    continue;
-                }
-
-                if (frameTuple == null) {
-                    frameTuple = btreeCursors[i].getTuple();
-                    foundIn = i;
-                    continue;
-                }
-
-                if (btreeCmp.compare(frameTuple, btreeCursors[i].getTuple()) > 0) {
-                    frameTuple = btreeCursors[i].getTuple();
-                    foundIn = i;
-                }
-            }
-
-            if (foundIn == -1) {
-                return false;
-            }
-
-            boolean killed = false;
-            buddyBtreeTuple.reset(frameTuple);
-            for (int i = 0; i < foundIn; i++) {
-                buddyBtreeCursors[i].close();
-                buddyBtreeRangePredicate.setHighKey(buddyBtreeTuple, true);
-                btreeRangePredicate.setLowKey(buddyBtreeTuple, true);
-                btreeAccessors[i].search(btreeCursors[i], btreeRangePredicate);
-                try {
-                    if (btreeCursors[i].hasNext()) {
-                        killed = true;
-                        break;
-                    }
-                } finally {
-                    btreeCursors[i].close();
-                }
-            }
-            if (!killed) {
-                foundNext = true;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void doNext() throws HyracksDataException {
-        foundNext = false;
-    }
-
-    @Override
-    public void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
-        super.doOpen(initialState, searchPred);
-        depletedBtreeCursors = new boolean[numberOfTrees];
-        foundNext = false;
-        for (int i = 0; i < numberOfTrees; i++) {
-            btreeCursors[i].close();
-        }
-        IndexCursorUtils.open(btreeAccessors, btreeCursors, btreeRangePredicate);
-        try {
-            for (int i = 0; i < numberOfTrees; i++) {
-                if (btreeCursors[i].hasNext()) {
-                    btreeCursors[i].next();
-                } else {
-                    depletedBtreeCursors[i] = true;
-                }
-            }
-        } catch (Throwable th) { // NOSONAR Must catch all failures to close before throwing
-            for (int i = 0; i < numberOfTrees; i++) {
-                IndexCursorUtils.close(btreeCursors[i], th);
-            }
-            throw HyracksDataException.create(th);
-        }
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java
deleted file mode 100644
index eb4b29d..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.btree.impls;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMIndexSearchCursor;
-import org.apache.hyracks.storage.common.ICursorInitialState;
-import org.apache.hyracks.storage.common.IIndexAccessor;
-import org.apache.hyracks.storage.common.IIndexCursor;
-import org.apache.hyracks.storage.common.IIndexCursorStats;
-import org.apache.hyracks.storage.common.ISearchPredicate;
-import org.apache.hyracks.storage.common.util.IndexCursorUtils;
-
-public class LSMBuddyBTreeMergeCursor extends LSMIndexSearchCursor {
-
-    public LSMBuddyBTreeMergeCursor(ILSMIndexOperationContext opCtx, IIndexCursorStats stats) {
-        super(opCtx, true, stats);
-    }
-
-    @Override
-    protected boolean isDeleted(PriorityQueueElement checkElement) throws HyracksDataException {
-        return false;
-    }
-
-    @Override
-    public void doOpen(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
-        LSMBTreeWithBuddyCursorInitialState lsmInitialState = (LSMBTreeWithBuddyCursorInitialState) initialState;
-        cmp = lsmInitialState.getBuddyBTreeCmp();
-        operationalComponents = lsmInitialState.getOperationalComponents();
-        // We intentionally set the lsmHarness to null so that we don't call
-        // lsmHarness.endSearch() because we already do that when we merge
-        // actual index.
-        lsmHarness = null;
-        int numBTrees = operationalComponents.size();
-        rangeCursors = new IIndexCursor[numBTrees];
-        RangePredicate btreePredicate = new RangePredicate(null, null, true, true, cmp, cmp);
-        IIndexAccessor[] btreeAccessors = new ITreeIndexAccessor[numBTrees];
-        for (int i = 0; i < numBTrees; i++) {
-            ILSMComponent component = operationalComponents.get(i);
-            BTree buddyBtree = ((LSMBTreeWithBuddyDiskComponent) component).getBuddyIndex();
-            btreeAccessors[i] = buddyBtree.createAccessor(iap);
-            rangeCursors[i] = btreeAccessors[i].createSearchCursor(false);
-        }
-        IndexCursorUtils.open(btreeAccessors, rangeCursors, btreePredicate);
-        try {
-            setPriorityQueueComparator();
-            initPriorityQueue();
-        } catch (Throwable th) { // NOSONAR: Must catch all failures
-            IndexCursorUtils.close(rangeCursors, th);
-            throw HyracksDataException.create(th);
-        }
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
index 2d38758..f2727ed 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
@@ -19,7 +19,6 @@
 
 package org.apache.hyracks.storage.am.lsm.common.api;
 
-import java.io.IOException;
 import java.util.Comparator;
 import java.util.List;
 
@@ -53,33 +52,6 @@
     Comparator<String> getFileNameComparator();
 
     /**
-     * @return delete existing transaction disk component file reference
-     * @throws HyracksDataException
-     */
-    void deleteTransactionFiles() throws HyracksDataException;
-
-    /**
-     * Rename files of a transaction removing the transaction prefix and return the component file reference in order to be committed
-     *
-     * @return the renamed component file references
-     * @throws HyracksDataException
-     */
-    LSMComponentFileReferences getTransactionFileReferenceForCommit() throws HyracksDataException;
-
-    /**
-     * Recover transaction files without returning them
-     *
-     * @throws HyracksDataException
-     */
-    void recoverTransaction() throws HyracksDataException;
-
-    /**
-     * @return a reference to the transaction disk component file reference
-     * @throws IOException
-     */
-    LSMComponentFileReferences getNewTransactionFileReference() throws IOException;
-
-    /**
      * Initializes the last used sequence
      *
      * @param lastUsedSeq
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbortRecoverLSMIndexFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbortRecoverLSMIndexFileManager.java
deleted file mode 100644
index 72d5423..0000000
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbortRecoverLSMIndexFileManager.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.hyracks.storage.am.lsm.common.impls;
-
-import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.api.io.IIOManager;
-
-public class AbortRecoverLSMIndexFileManager extends AbstractLSMIndexFileManager {
-    public AbortRecoverLSMIndexFileManager(IIOManager ioManager, FileReference file) {
-        super(ioManager, file, null);
-    }
-}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java
index 5d70337..4da207d 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java
@@ -20,7 +20,6 @@
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
 import java.io.FilenameFilter;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -79,17 +78,12 @@
      * Indicates Look Aside File (LAF) for compressed indexes
      */
     public static final String LAF_SUFFIX = ".dic";
-    /**
-     * Hides transaction components until they are either committed by removing this file or deleted along with the file
-     */
-    public static final String TXN_PREFIX = ".T";
     public static final long UNINITIALIZED_COMPONENT_SEQ = -1;
     public static final FilenameFilter COMPONENT_FILES_FILTER = (dir, name) -> !name.startsWith(".");
-    protected static final FilenameFilter txnFileNameFilter = (dir, name) -> name.startsWith(TXN_PREFIX);
-    protected static FilenameFilter bloomFilterFilter =
+    protected static FilenameFilter BLOOM_FILTER_FILTER =
             (dir, name) -> !name.startsWith(".") && name.endsWith(BLOOM_FILTER_SUFFIX);
     protected static final Comparator<String> cmp = new FileNameComparator();
-    private static final FilenameFilter dummyFilter = (dir, name) -> true;
+
     protected final IIOManager ioManager;
     // baseDir should reflect dataset name and partition name and be absolute
     protected final FileReference baseDir;
@@ -293,19 +287,7 @@
         return baseDir;
     }
 
-    @Override
-    public void recoverTransaction() throws HyracksDataException {
-        String[] files = listDirFiles(baseDir, txnFileNameFilter);
-        if (files.length == 0) {
-            // Do nothing
-        } else if (files.length > 1) {
-            throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir);
-        } else {
-            IoUtil.delete(baseDir.getChild(files[0]));
-        }
-    }
-
-    private class RecencyComparator implements Comparator<IndexComponentFileReference> {
+    private static class RecencyComparator implements Comparator<IndexComponentFileReference> {
         @Override
         public int compare(IndexComponentFileReference a, IndexComponentFileReference b) {
             int startCmp = -Long.compare(a.getSequenceStart(), b.getSequenceStart());
@@ -316,65 +298,15 @@
         }
     }
 
-    // This function is used to delete transaction files for aborted transactions
-    @Override
-    public void deleteTransactionFiles() throws HyracksDataException {
-        String[] files = listDirFiles(baseDir, txnFileNameFilter);
-        if (files.length == 0) {
-            // Do nothing
-        } else if (files.length > 1) {
-            throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir);
-        } else {
-            //create transaction filter
-            FilenameFilter transactionFilter = createTransactionFilter(files[0], true);
-            String[] componentsFiles = listDirFiles(baseDir, transactionFilter);
-            for (String fileName : componentsFiles) {
-                FileReference file = baseDir.getChild(fileName);
-                IoUtil.delete(file);
-            }
-            // delete the txn lock file
-            IoUtil.delete(baseDir.getChild(files[0]));
-        }
-    }
-
-    @Override
-    public LSMComponentFileReferences getNewTransactionFileReference() throws IOException {
-        return null;
-    }
-
-    @Override
-    public LSMComponentFileReferences getTransactionFileReferenceForCommit() throws HyracksDataException {
-        return null;
-    }
-
     @Override
     public void initLastUsedSeq(long lastUsedSeq) {
         lastUsedComponentSeq = lastUsedSeq;
     }
 
-    private static FilenameFilter createTransactionFilter(String transactionFileName, final boolean inclusive) {
-        final String timeStamp =
-                transactionFileName.substring(transactionFileName.indexOf(TXN_PREFIX) + TXN_PREFIX.length());
-        return (dir, name) -> inclusive == name.startsWith(timeStamp);
-    }
-
-    protected FilenameFilter getTransactionFileFilter(boolean inclusive) throws HyracksDataException {
-        String[] files = listDirFiles(baseDir, txnFileNameFilter);
-        if (files.length == 0) {
-            return dummyFilter;
-        } else {
-            return createTransactionFilter(files[0], inclusive);
-        }
-    }
-
     protected void delete(IBufferCache bufferCache, FileReference fileRef) throws HyracksDataException {
         bufferCache.deleteFile(fileRef);
     }
 
-    protected FilenameFilter getCompoundFilter(final FilenameFilter filter1, final FilenameFilter filter2) {
-        return (dir, name) -> filter1.accept(dir, name) && filter2.accept(dir, name);
-    }
-
     protected String getNextComponentSequence(FilenameFilter filenameFilter) throws HyracksDataException {
         if (lastUsedComponentSeq == UNINITIALIZED_COMPONENT_SEQ) {
             lastUsedComponentSeq = getOnDiskLastUsedComponentSequence(filenameFilter);
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java
index 83f6573..3b8f82a 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java
@@ -92,7 +92,7 @@
         validateFiles(deletedKeysBTreeFilesSet, allInvListsFiles, invListFilter, null, btreeFactory.getBufferCache());
         validateFiles(deletedKeysBTreeFilesSet, allDictBTreeFiles, dictBTreeFilter, btreeFactory,
                 btreeFactory.getBufferCache());
-        validateFiles(deletedKeysBTreeFilesSet, allBloomFilterFiles, bloomFilterFilter, null,
+        validateFiles(deletedKeysBTreeFilesSet, allBloomFilterFiles, BLOOM_FILTER_FILTER, null,
                 btreeFactory.getBufferCache());
 
         // Sanity check.
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java
index 81e8f83..a511f8c 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java
@@ -20,9 +20,6 @@
 package org.apache.hyracks.storage.am.lsm.rtree.impls;
 
 import java.io.FilenameFilter;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -33,7 +30,6 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.io.IIOManager;
-import org.apache.hyracks.api.util.IoUtil;
 import org.apache.hyracks.storage.am.common.api.ITreeIndex;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexFileManager;
 import org.apache.hyracks.storage.am.lsm.common.impls.IndexComponentFileReference;
@@ -80,20 +76,14 @@
         ArrayList<IndexComponentFileReference> allBTreeFiles = new ArrayList<>();
         ArrayList<IndexComponentFileReference> allBloomFilterFiles = new ArrayList<>();
 
-        // Create a transaction filter <- to hide transaction components->
-        FilenameFilter transactionFilter = getTransactionFileFilter(false);
-
         // Gather files.
-        cleanupAndGetValidFilesInternal(getCompoundFilter(transactionFilter, btreeFilter), btreeFactory, allBTreeFiles,
-                btreeFactory.getBufferCache());
+        cleanupAndGetValidFilesInternal(btreeFilter, btreeFactory, allBTreeFiles, btreeFactory.getBufferCache());
         HashSet<String> btreeFilesSet = new HashSet<>();
         for (IndexComponentFileReference cmpFileName : allBTreeFiles) {
             btreeFilesSet.add(cmpFileName.getSequence());
         }
-        validateFiles(btreeFilesSet, allRTreeFiles, getCompoundFilter(transactionFilter, rtreeFilter), rtreeFactory,
-                btreeFactory.getBufferCache());
-        validateFiles(btreeFilesSet, allBloomFilterFiles, getCompoundFilter(transactionFilter, bloomFilterFilter), null,
-                btreeFactory.getBufferCache());
+        validateFiles(btreeFilesSet, allRTreeFiles, rtreeFilter, rtreeFactory, btreeFactory.getBufferCache());
+        validateFiles(btreeFilesSet, allBloomFilterFiles, BLOOM_FILTER_FILTER, null, btreeFactory.getBufferCache());
 
         // Sanity check.
         if (allRTreeFiles.size() != allBTreeFiles.size() || allBTreeFiles.size() != allBloomFilterFiles.size()) {
@@ -101,11 +91,11 @@
         }
 
         // Trivial cases.
-        if (allRTreeFiles.isEmpty() || allBTreeFiles.isEmpty() || allBloomFilterFiles.isEmpty()) {
+        if (allRTreeFiles.isEmpty()) {
             return validFiles;
         }
 
-        if (allRTreeFiles.size() == 1 && allBTreeFiles.size() == 1 && allBloomFilterFiles.size() == 1) {
+        if (allRTreeFiles.size() == 1) {
             validFiles.add(new LSMComponentFileReferences(allRTreeFiles.get(0).getFileRef(),
                     allBTreeFiles.get(0).getFileRef(), allBloomFilterFiles.get(0).getFileRef()));
             return validFiles;
@@ -171,49 +161,4 @@
         }
         return validFiles;
     }
-
-    @Override
-    public LSMComponentFileReferences getNewTransactionFileReference() throws IOException {
-        String baseName = getNextComponentSequence(btreeFilter);
-        // Create transaction lock file
-        Files.createFile(Paths.get(baseDir + TXN_PREFIX + baseName));
-        return new LSMComponentFileReferences(baseDir.getChild(baseName + DELIMITER + RTREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + BTREE_SUFFIX),
-                baseDir.getChild(baseName + DELIMITER + BLOOM_FILTER_SUFFIX));
-    }
-
-    @Override
-    public LSMComponentFileReferences getTransactionFileReferenceForCommit() throws HyracksDataException {
-        FilenameFilter transactionFilter;
-        String[] files = baseDir.getFile().list(txnFileNameFilter);
-        if (files.length == 0) {
-            return null;
-        }
-        if (files.length != 1) {
-            throw HyracksDataException.create(ErrorCode.FOUND_MULTIPLE_TRANSACTIONS, baseDir);
-        } else {
-            transactionFilter = getTransactionFileFilter(true);
-            // get the actual transaction files
-            files = baseDir.getFile().list(transactionFilter);
-            if (files.length < 3) {
-                throw HyracksDataException.create(ErrorCode.UNEQUAL_NUM_FILTERS_TREES, baseDir);
-            }
-            IoUtil.delete(baseDir.getChild(files[0]));
-        }
-        FileReference rTreeFileRef = null;
-        FileReference bTreeFileRef = null;
-        FileReference bloomFilterFileRef = null;
-        for (String fileName : files) {
-            if (fileName.endsWith(BTREE_SUFFIX)) {
-                bTreeFileRef = baseDir.getChild(fileName);
-            } else if (fileName.endsWith(RTREE_SUFFIX)) {
-                rTreeFileRef = baseDir.getChild(fileName);
-            } else if (fileName.endsWith(BLOOM_FILTER_SUFFIX)) {
-                bloomFilterFileRef = baseDir.getChild(fileName);
-            } else {
-                throw HyracksDataException.create(ErrorCode.UNRECOGNIZED_INDEX_COMPONENT_FILE, fileName);
-            }
-        }
-        return new LSMComponentFileReferences(rTreeFileRef, bTreeFileRef, bloomFilterFileRef);
-    }
 }