Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 19FE6200C66 for ; Sat, 15 Apr 2017 23:44:51 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 1899B160BA0; Sat, 15 Apr 2017 21:44:51 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 42D87160BB5 for ; Sat, 15 Apr 2017 23:44:48 +0200 (CEST) Received: (qmail 41424 invoked by uid 500); 15 Apr 2017 21:44:47 -0000 Mailing-List: contact commits-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list commits@asterixdb.apache.org Received: (qmail 40910 invoked by uid 99); 15 Apr 2017 21:44:45 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 15 Apr 2017 21:44:45 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 167BCDFDAC; Sat, 15 Apr 2017 21:44:45 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: amoudi@apache.org To: commits@asterixdb.apache.org Date: Sat, 15 Apr 2017 21:44:48 -0000 Message-Id: <855019a9c8a549dd8b13c420a0acf989@git.apache.org> In-Reply-To: <04cfd80b44fd4ddea8b1c9219b10a5e9@git.apache.org> References: <04cfd80b44fd4ddea8b1c9219b10a5e9@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [05/13] asterixdb git commit: Cleanup storage exceptions archived-at: Sat, 15 Apr 2017 21:44:51 -0000 http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java index e62ccdc..497a887 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java @@ -26,6 +26,7 @@ import java.util.Set; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.exceptions.ErrorCode; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.data.std.primitive.IntegerPointable; @@ -46,18 +47,15 @@ import org.apache.hyracks.storage.am.common.api.ISearchPredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; -import org.apache.hyracks.storage.am.common.api.IndexException; -import org.apache.hyracks.storage.am.common.api.TreeIndexException; -import org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; import org.apache.hyracks.storage.am.common.tuples.DualTupleReference; import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFrameFactory; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; @@ -96,8 +94,7 @@ public class LSMRTree extends AbstractLSMRTree { throws HyracksDataException { super(ioManager, virtualBufferCaches, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory, fileNameManager, - new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, - filterFactory), + new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, filterFactory), diskFileMapProvider, fieldCount, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, linearizerArray, bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, filterFactory, filterFrameFactory, filterManager, rtreeFields, filterFields, durable, isPointMBR, @@ -138,22 +135,13 @@ public class LSMRTree extends AbstractLSMRTree { super.activate(); List immutableComponents = diskComponents; List validFileReferences; - try { - validFileReferences = fileManager.cleanupAndGetValidFiles(); - } catch (IndexException e) { - throw new HyracksDataException(e); - } + validFileReferences = fileManager.cleanupAndGetValidFiles(); immutableComponents.clear(); for (LSMComponentFileReferences lsmComonentFileReference : validFileReferences) { LSMRTreeDiskComponent component; - try { - component = - createDiskComponent(componentFactory, lsmComonentFileReference.getInsertIndexFileReference(), - lsmComonentFileReference.getDeleteIndexFileReference(), - lsmComonentFileReference.getBloomFilterFileReference(), false); - } catch (IndexException e) { - throw new HyracksDataException(e); - } + component = createDiskComponent(componentFactory, lsmComonentFileReference.getInsertIndexFileReference(), + lsmComonentFileReference.getDeleteIndexFileReference(), + lsmComonentFileReference.getBloomFilterFileReference(), false); immutableComponents.add(component); } isActivated = true; @@ -225,7 +213,7 @@ public class LSMRTree extends AbstractLSMRTree { } @Override - public ILSMDiskComponent flush(ILSMIOOperation operation) throws HyracksDataException, IndexException { + public ILSMDiskComponent flush(ILSMIOOperation operation) throws HyracksDataException { LSMRTreeFlushOperation flushOp = (LSMRTreeFlushOperation) operation; LSMRTreeMemoryComponent flushingComponent = (LSMRTreeMemoryComponent) flushOp.getFlushingComponent(); // Renaming order is critical because we use assume ordering when we @@ -337,7 +325,7 @@ public class LSMRTree extends AbstractLSMRTree { @Override public void scheduleMerge(ILSMIndexOperationContext ctx, ILSMIOOperationCallback callback) - throws HyracksDataException, IndexException { + throws HyracksDataException { ILSMIndexOperationContext rctx = createOpContext(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); rctx.setOperation(IndexOperation.MERGE); @@ -351,7 +339,7 @@ public class LSMRTree extends AbstractLSMRTree { } @Override - public ILSMDiskComponent merge(ILSMIOOperation operation) throws HyracksDataException, IndexException { + public ILSMDiskComponent merge(ILSMIOOperation operation) throws HyracksDataException { LSMRTreeMergeOperation mergeOp = (LSMRTreeMergeOperation) operation; ITreeIndexCursor cursor = mergeOp.getCursor(); ISearchPredicate rtreeSearchPred = new SearchPredicate(null, null); @@ -444,21 +432,21 @@ public class LSMRTree extends AbstractLSMRTree { } @Override - public void delete(ITupleReference tuple) throws HyracksDataException, IndexException { + public void delete(ITupleReference tuple) throws HyracksDataException { ctx.setOperation(IndexOperation.DELETE); dualTuple.reset(tuple); lsmHarness.modify(ctx, false, dualTuple); } @Override - public boolean tryDelete(ITupleReference tuple) throws HyracksDataException, IndexException { + public boolean tryDelete(ITupleReference tuple) throws HyracksDataException { ctx.setOperation(IndexOperation.DELETE); dualTuple.reset(tuple); return lsmHarness.modify(ctx, true, dualTuple); } @Override - public void forceDelete(ITupleReference tuple) throws HyracksDataException, IndexException { + public void forceDelete(ITupleReference tuple) throws HyracksDataException { ctx.setOperation(IndexOperation.DELETE); dualTuple.reset(tuple); lsmHarness.forceModify(ctx, dualTuple); @@ -470,27 +458,21 @@ public class LSMRTree extends AbstractLSMRTree { } } - protected ILSMDiskComponent createBulkLoadTarget() throws HyracksDataException, IndexException { + protected ILSMDiskComponent createBulkLoadTarget() throws HyracksDataException { LSMComponentFileReferences componentFileRefs = fileManager.getRelFlushFileReference(); return createDiskComponent(componentFactory, componentFileRefs.getInsertIndexFileReference(), - componentFileRefs.getDeleteIndexFileReference(), componentFileRefs.getBloomFilterFileReference(), - true); + componentFileRefs.getDeleteIndexFileReference(), componentFileRefs.getBloomFilterFileReference(), true); } @Override public IIndexBulkLoader createBulkLoader(float fillLevel, boolean verifyInput, long numElementsHint, - boolean checkIfEmptyIndex) throws TreeIndexException { - try { - return new LSMRTreeBulkLoader(fillLevel, verifyInput, numElementsHint, checkIfEmptyIndex); - } catch (HyracksDataException e) { - throw new TreeIndexException(e); - } + boolean checkIfEmptyIndex) throws HyracksDataException { + return new LSMRTreeBulkLoader(fillLevel, verifyInput, numElementsHint, checkIfEmptyIndex); } // This function is modified for R-Trees without antimatter tuples to allow buddy B-Tree to have only primary keys @Override - public void modify(IIndexOperationContext ictx, ITupleReference tuple) - throws HyracksDataException, IndexException { + public void modify(IIndexOperationContext ictx, ITupleReference tuple) throws HyracksDataException { LSMRTreeOpContext ctx = (LSMRTreeOpContext) ictx; if (ctx.getOperation() == IndexOperation.PHYSICALDELETE) { throw new UnsupportedOperationException("Physical delete not supported in the LSM-RTree"); @@ -513,9 +495,12 @@ public class LSMRTree extends AbstractLSMRTree { ctx.currentMutableRTreeAccessor.delete(indexTuple); try { ctx.currentMutableBTreeAccessor.insert(((DualTupleReference) tuple).getPermutingTuple()); - } catch (TreeIndexDuplicateKeyException e) { + } catch (HyracksDataException e) { // Do nothing, because one delete tuple is enough to indicate // that all the corresponding insert tuples are deleted + if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) { + throw e; + } } } if (ctx.filterTuple != null) { @@ -536,17 +521,13 @@ public class LSMRTree extends AbstractLSMRTree { public final MultiComparator filterCmp; public LSMRTreeBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint, - boolean checkIfEmptyIndex) throws TreeIndexException, HyracksDataException { + boolean checkIfEmptyIndex) throws HyracksDataException { if (checkIfEmptyIndex && !isEmptyIndex()) { - throw new TreeIndexException("Cannot load an index that is not empty"); + throw HyracksDataException.create(ErrorCode.LOAD_NON_EMPTY_INDEX); } // Note that by using a flush target file name, we state that the // new bulk loaded tree is "newer" than any other merged tree. - try { - component = createBulkLoadTarget(); - } catch (HyracksDataException | IndexException e) { - throw new TreeIndexException(e); - } + component = createBulkLoadTarget(); bulkLoader = ((LSMRTreeDiskComponent) component).getRTree().createBulkLoader(fillFactor, verifyInput, numElementsHint, false); buddyBTreeBulkloader = ((LSMRTreeDiskComponent) component).getBTree().createBulkLoader(fillFactor, @@ -563,7 +544,7 @@ public class LSMRTree extends AbstractLSMRTree { } @Override - public void add(ITupleReference tuple) throws HyracksDataException, IndexException { + public void add(ITupleReference tuple) throws HyracksDataException { try { ITupleReference t; if (indexTuple != null) { @@ -579,7 +560,7 @@ public class LSMRTree extends AbstractLSMRTree { filterTuple.reset(tuple); component.getLSMComponentFilter().update(filterTuple, filterCmp); } - } catch (IndexException | HyracksDataException | RuntimeException e) { + } catch (Exception e) { cleanupArtifacts(); throw e; } @@ -589,7 +570,7 @@ public class LSMRTree extends AbstractLSMRTree { } @Override - public void end() throws HyracksDataException, IndexException { + public void end() throws HyracksDataException { if (!cleanedUpArtifacts) { if (component.getLSMComponentFilter() != null) { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java index 22a1054..409649b 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java @@ -29,7 +29,6 @@ import org.apache.hyracks.storage.am.common.api.IIndexAccessor; import org.apache.hyracks.storage.am.common.api.IIndexCursor; import org.apache.hyracks.storage.am.common.api.ISearchPredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor; -import org.apache.hyracks.storage.am.common.api.IndexException; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext; @@ -42,13 +41,12 @@ public class LSMRTreeDeletedKeysBTreeMergeCursor extends LSMIndexSearchCursor { } @Override - protected boolean isDeleted(PriorityQueueElement checkElement) throws HyracksDataException, IndexException { + protected boolean isDeleted(PriorityQueueElement checkElement) throws HyracksDataException { return false; } @Override - public void open(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException, - IndexException { + public void open(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException { LSMRTreeCursorInitialState lsmInitialState = (LSMRTreeCursorInitialState) initialState; cmp = lsmInitialState.getBTreeCmp(); operationalComponents = lsmInitialState.getOperationalComponents(); @@ -63,7 +61,7 @@ public class LSMRTreeDeletedKeysBTreeMergeCursor extends LSMIndexSearchCursor { ILSMComponent component = operationalComponents.get(i); IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame(); rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false); - BTree btree = (BTree) ((LSMRTreeDiskComponent) component).getBTree(); + BTree btree = ((LSMRTreeDiskComponent) component).getBTree(); btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); btreeAccessors[i].search(rangeCursors[i], btreePredicate); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java ---------------------------------------------------------------------- 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 cb6c065..f9ee5c9 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 @@ -34,7 +34,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.storage.am.common.api.ITreeIndex; -import org.apache.hyracks.storage.am.common.api.IndexException; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexFileManager; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences; import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory; @@ -74,8 +73,8 @@ public class LSMRTreeFileManager extends AbstractLSMIndexFileManager { String baseName = baseDir + ts + SPLIT_STRING + ts; // Begin timestamp and end timestamp are identical since it is a flush return new LSMComponentFileReferences(createFlushFile(baseName + SPLIT_STRING + RTREE_STRING), - createFlushFile(baseName + SPLIT_STRING + BTREE_STRING), createFlushFile(baseName + SPLIT_STRING - + BLOOM_FILTER_STRING)); + createFlushFile(baseName + SPLIT_STRING + BTREE_STRING), + createFlushFile(baseName + SPLIT_STRING + BLOOM_FILTER_STRING)); } @Override @@ -88,12 +87,12 @@ public class LSMRTreeFileManager extends AbstractLSMIndexFileManager { // Get the range of timestamps by taking the earliest and the latest // timestamps return new LSMComponentFileReferences(createMergeFile(baseName + SPLIT_STRING + RTREE_STRING), - createMergeFile(baseName + SPLIT_STRING + BTREE_STRING), createMergeFile(baseName + SPLIT_STRING - + BLOOM_FILTER_STRING)); + createMergeFile(baseName + SPLIT_STRING + BTREE_STRING), + createMergeFile(baseName + SPLIT_STRING + BLOOM_FILTER_STRING)); } @Override - public List cleanupAndGetValidFiles() throws HyracksDataException, IndexException { + public List cleanupAndGetValidFiles() throws HyracksDataException { List validFiles = new ArrayList<>(); ArrayList allRTreeFiles = new ArrayList<>(); ArrayList allBTreeFiles = new ArrayList<>(); @@ -110,7 +109,8 @@ public class LSMRTreeFileManager extends AbstractLSMIndexFileManager { btreeFilesSet.add(cmpFileName.fileName.substring(0, index)); } validateFiles(btreeFilesSet, allRTreeFiles, getCompoundFilter(transactionFilter, rtreeFilter), rtreeFactory); - validateFiles(btreeFilesSet, allBloomFilterFiles, getCompoundFilter(transactionFilter, bloomFilterFilter), null); + validateFiles(btreeFilesSet, allBloomFilterFiles, getCompoundFilter(transactionFilter, bloomFilterFilter), + null); // Sanity check. if (allRTreeFiles.size() != allBTreeFiles.size() || allBTreeFiles.size() != allBloomFilterFiles.size()) { @@ -175,7 +175,8 @@ public class LSMRTreeFileManager extends AbstractLSMIndexFileManager { invalidBloomFilterFile.delete(); } else { // This scenario should not be possible. - throw new HyracksDataException("Found LSM files with overlapping but not contained timetamp intervals."); + throw new HyracksDataException( + "Found LSM files with overlapping but not contained timetamp intervals."); } } @@ -206,8 +207,8 @@ public class LSMRTreeFileManager extends AbstractLSMIndexFileManager { String baseName = baseDir + ts + SPLIT_STRING + ts; return new LSMComponentFileReferences(createFlushFile(baseName + SPLIT_STRING + RTREE_STRING), - createFlushFile(baseName + SPLIT_STRING + BTREE_STRING), createFlushFile(baseName + SPLIT_STRING - + BLOOM_FILTER_STRING)); + createFlushFile(baseName + SPLIT_STRING + BTREE_STRING), + createFlushFile(baseName + SPLIT_STRING + BLOOM_FILTER_STRING)); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java index 013821d..618b3a7 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java @@ -25,7 +25,6 @@ import java.util.Set; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.FileReference; import org.apache.hyracks.api.io.IODeviceHandle; -import org.apache.hyracks.storage.am.common.api.IndexException; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; @@ -70,7 +69,7 @@ public class LSMRTreeFlushOperation implements ILSMIOOperation, Comparable 0) { + frameTuple.getFieldLength(0) * linearizeCmp.getDimensions(), + rtreeCursors[i].getTuple().getFieldData(0), rtreeCursors[i].getTuple().getFieldStart(0), + rtreeCursors[i].getTuple().getFieldLength(0) * linearizeCmp.getDimensions()) > 0) { frameTuple = rtreeCursors[i].getTuple(); foundIn = i; } } - if (foundIn == -1) + if (foundIn == -1) { return false; + } boolean killed = false; btreeTuple.reset(frameTuple); for (int i = 0; i < foundIn; i++) { - try { - btreeCursors[i].reset(); - btreeRangePredicate.setHighKey(btreeTuple, true); - btreeRangePredicate.setLowKey(btreeTuple, true); - btreeAccessors[i].search(btreeCursors[i], btreeRangePredicate); - } catch (IndexException e) { - throw new HyracksDataException(e); - } + btreeCursors[i].reset(); + btreeRangePredicate.setHighKey(btreeTuple, true); + btreeRangePredicate.setLowKey(btreeTuple, true); + btreeAccessors[i].search(btreeCursors[i], btreeRangePredicate); try { if (btreeCursors[i].hasNext()) { killed = true; @@ -151,11 +144,7 @@ public class LSMRTreeSortedCursor extends LSMRTreeAbstractCursor { foundNext = false; for (int i = 0; i < numberOfTrees; i++) { rtreeCursors[i].reset(); - try { - rtreeAccessors[i].search(rtreeCursors[i], rtreeSearchPredicate); - } catch (IndexException e) { - throw new HyracksDataException(e); - } + rtreeAccessors[i].search(rtreeCursors[i], rtreeSearchPredicate); if (rtreeCursors[i].hasNext()) { rtreeCursors[i].next(); } else { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java index 179865a..b246e8f 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java @@ -26,6 +26,7 @@ import java.util.Set; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.exceptions.ErrorCode; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; @@ -38,17 +39,15 @@ import org.apache.hyracks.storage.am.common.api.ISearchPredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; -import org.apache.hyracks.storage.am.common.api.IndexException; -import org.apache.hyracks.storage.am.common.api.TreeIndexException; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFrameFactory; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; @@ -104,19 +103,11 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { List immutableComponents = diskComponents; immutableComponents.clear(); List validFileReferences; - try { - validFileReferences = fileManager.cleanupAndGetValidFiles(); - } catch (IndexException e) { - throw new HyracksDataException(e); - } + validFileReferences = fileManager.cleanupAndGetValidFiles(); for (LSMComponentFileReferences lsmComonentFileReference : validFileReferences) { LSMRTreeDiskComponent component; - try { - component = createDiskComponent(componentFactory, - lsmComonentFileReference.getInsertIndexFileReference(), null, null, false); - } catch (IndexException e) { - throw new HyracksDataException(e); - } + component = createDiskComponent(componentFactory, lsmComonentFileReference.getInsertIndexFileReference(), + null, null, false); immutableComponents.add(component); } isActivated = true; @@ -175,7 +166,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { } @Override - public ILSMDiskComponent flush(ILSMIOOperation operation) throws HyracksDataException, IndexException { + public ILSMDiskComponent flush(ILSMIOOperation operation) throws HyracksDataException { LSMRTreeFlushOperation flushOp = (LSMRTreeFlushOperation) operation; // Renaming order is critical because we use assume ordering when we // read the file names when we open the tree. @@ -268,7 +259,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { @Override public void scheduleMerge(ILSMIndexOperationContext ctx, ILSMIOOperationCallback callback) - throws HyracksDataException, IndexException { + throws HyracksDataException { LSMRTreeOpContext rctx = createOpContext(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); rctx.setOperation(IndexOperation.MERGE); List mergingComponents = ctx.getComponentHolder(); @@ -285,7 +276,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { } @Override - public ILSMDiskComponent merge(ILSMIOOperation operation) throws HyracksDataException, IndexException { + public ILSMDiskComponent merge(ILSMIOOperation operation) throws HyracksDataException { LSMRTreeMergeOperation mergeOp = (LSMRTreeMergeOperation) operation; ITreeIndexCursor cursor = mergeOp.getCursor(); ISearchPredicate rtreeSearchPred = new SearchPredicate(null, null); @@ -346,13 +337,8 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { @Override public IIndexBulkLoader createBulkLoader(float fillLevel, boolean verifyInput, long numElementsHint, - boolean checkIfEmptyIndex) throws TreeIndexException { - try { - return new LSMRTreeWithAntiMatterTuplesBulkLoader(fillLevel, verifyInput, numElementsHint, - checkIfEmptyIndex); - } catch (HyracksDataException e) { - throw new TreeIndexException(e); - } + boolean checkIfEmptyIndex) throws HyracksDataException { + return new LSMRTreeWithAntiMatterTuplesBulkLoader(fillLevel, verifyInput, numElementsHint, checkIfEmptyIndex); } public class LSMRTreeWithAntiMatterTuplesBulkLoader implements IIndexBulkLoader { @@ -365,17 +351,14 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { public final MultiComparator filterCmp; public LSMRTreeWithAntiMatterTuplesBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint, - boolean checkIfEmptyIndex) throws TreeIndexException, HyracksDataException { + boolean checkIfEmptyIndex) throws HyracksDataException { if (checkIfEmptyIndex && !isEmptyIndex()) { - throw new TreeIndexException("Cannot load an index that is not empty"); + throw HyracksDataException.create(ErrorCode.LOAD_NON_EMPTY_INDEX); } // Note that by using a flush target file name, we state that the // new bulk loaded tree is "newer" than any other merged tree. - try { - component = createBulkLoadTarget(); - } catch (HyracksDataException | IndexException e) { - throw new TreeIndexException(e); - } + + component = createBulkLoadTarget(); bulkLoader = ((LSMRTreeDiskComponent) component).getRTree().createBulkLoader(fillFactor, verifyInput, numElementsHint, false); @@ -391,7 +374,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { } @Override - public void add(ITupleReference tuple) throws HyracksDataException, IndexException { + public void add(ITupleReference tuple) throws HyracksDataException { try { ITupleReference t; if (indexTuple != null) { @@ -408,7 +391,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { component.getLSMComponentFilter().update(filterTuple, filterCmp); } - } catch (IndexException | HyracksDataException | RuntimeException e) { + } catch (Exception e) { cleanupArtifacts(); throw e; } @@ -418,7 +401,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { } @Override - public void end() throws HyracksDataException, IndexException { + public void end() throws HyracksDataException { if (!cleanedUpArtifacts) { if (component.getLSMComponentFilter() != null) { @@ -451,7 +434,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { } } - private ILSMDiskComponent createBulkLoadTarget() throws HyracksDataException, IndexException { + private ILSMDiskComponent createBulkLoadTarget() throws HyracksDataException { LSMComponentFileReferences relFlushFileRefs = fileManager.getRelFlushFileReference(); return createDiskComponent(bulkLoaComponentFactory, relFlushFileRefs.getInsertIndexFileReference(), null, null, true); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesSearchCursor.java index a913b81..98ab803 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesSearchCursor.java @@ -29,7 +29,6 @@ import org.apache.hyracks.storage.am.common.api.ICursorInitialState; import org.apache.hyracks.storage.am.common.api.ISearchPredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; -import org.apache.hyracks.storage.am.common.api.IndexException; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; @@ -68,8 +67,7 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs } @Override - public void open(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException, - IndexException { + public void open(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException { LSMRTreeCursorInitialState lsmInitialState = (LSMRTreeCursorInitialState) initialState; cmp = lsmInitialState.getHilbertCmp(); btreeCmp = lsmInitialState.getBTreeCmp(); @@ -99,16 +97,16 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs btreeAccessors = new ITreeIndexAccessor[numMutableComponents]; for (int i = 0; i < numMutableComponents; i++) { ILSMComponent component = operationalComponents.get(i); - RTree rtree = (RTree) ((LSMRTreeMemoryComponent) component).getRTree(); - BTree btree = (BTree) ((LSMRTreeMemoryComponent) component).getBTree(); - mutableRTreeCursors[i] = new RTreeSearchCursor((IRTreeInteriorFrame) lsmInitialState - .getRTreeInteriorFrameFactory().createFrame(), (IRTreeLeafFrame) lsmInitialState - .getRTreeLeafFrameFactory().createFrame()); - btreeCursors[i] = new BTreeRangeSearchCursor((IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory() - .createFrame(), false); + RTree rtree = ((LSMRTreeMemoryComponent) component).getRTree(); + BTree btree = ((LSMRTreeMemoryComponent) component).getBTree(); + mutableRTreeCursors[i] = new RTreeSearchCursor( + (IRTreeInteriorFrame) lsmInitialState.getRTreeInteriorFrameFactory().createFrame(), + (IRTreeLeafFrame) lsmInitialState.getRTreeLeafFrameFactory().createFrame()); + btreeCursors[i] = new BTreeRangeSearchCursor( + (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame(), false); btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); - mutableRTreeAccessors[i] = rtree.createAccessor(NoOpOperationCallback.INSTANCE, - NoOpOperationCallback.INSTANCE); + mutableRTreeAccessors[i] = + rtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); } rangeCursors = new RTreeSearchCursor[numImmutableComponents]; @@ -116,12 +114,12 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs int j = 0; for (int i = numMutableComponents; i < operationalComponents.size(); i++) { ILSMComponent component = operationalComponents.get(i); - rangeCursors[j] = new RTreeSearchCursor((IRTreeInteriorFrame) lsmInitialState - .getRTreeInteriorFrameFactory().createFrame(), (IRTreeLeafFrame) lsmInitialState - .getRTreeLeafFrameFactory().createFrame()); - RTree rtree = (RTree) ((LSMRTreeDiskComponent) component).getRTree(); - immutableRTreeAccessors[j] = rtree.createAccessor(NoOpOperationCallback.INSTANCE, - NoOpOperationCallback.INSTANCE); + rangeCursors[j] = new RTreeSearchCursor( + (IRTreeInteriorFrame) lsmInitialState.getRTreeInteriorFrameFactory().createFrame(), + (IRTreeLeafFrame) lsmInitialState.getRTreeLeafFrameFactory().createFrame()); + RTree rtree = ((LSMRTreeDiskComponent) component).getRTree(); + immutableRTreeAccessors[j] = + rtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); immutableRTreeAccessors[j].search(rangeCursors[j], searchPred); j++; } @@ -131,7 +129,7 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs open = true; } - private void searchNextCursor() throws HyracksDataException, IndexException { + private void searchNextCursor() throws HyracksDataException { if (currentCursor < numMutableComponents) { mutableRTreeCursors[currentCursor].reset(); mutableRTreeAccessors[currentCursor].search(mutableRTreeCursors[currentCursor], rtreeSearchPredicate); @@ -139,7 +137,7 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs } @Override - public boolean hasNext() throws HyracksDataException, IndexException { + public boolean hasNext() throws HyracksDataException { if (includeMutableComponent) { if (foundNext) { return true; @@ -196,7 +194,7 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs } @Override - public void reset() throws HyracksDataException, IndexException { + public void reset() throws HyracksDataException { if (!open) { return; } @@ -233,8 +231,7 @@ public class LSMRTreeWithAntiMatterTuplesSearchCursor extends LSMIndexSearchCurs return cmp.selectiveFieldCompare(tupleA, tupleB, comparatorFields); } - private boolean searchMemBTrees(ITupleReference tuple, int lastBTreeToSearch) throws HyracksDataException, - IndexException { + private boolean searchMemBTrees(ITupleReference tuple, int lastBTreeToSearch) throws HyracksDataException { for (int i = 0; i < lastBTreeToSearch; i++) { btreeCursors[i].reset(); btreeRangePredicate.setHighKey(tuple, true); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java index 624c7de..12226cf 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; import org.apache.hyracks.api.dataflow.value.ITypeTraits; +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; @@ -37,7 +38,6 @@ import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriterFactory; -import org.apache.hyracks.storage.am.common.api.TreeIndexException; import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler; @@ -72,33 +72,32 @@ import org.apache.hyracks.storage.common.file.IFileMapProvider; public class LSMRTreeUtils { public static LSMRTree createLSMTree(IIOManager ioManager, List virtualBufferCaches, - FileReference file, - IBufferCache diskBufferCache, IFileMapProvider diskFileMapProvider, ITypeTraits[] typeTraits, - IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, - IPrimitiveValueProviderFactory[] valueProviderFactories, RTreePolicyType rtreePolicyType, - double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, - ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, + FileReference file, IBufferCache diskBufferCache, IFileMapProvider diskFileMapProvider, + ITypeTraits[] typeTraits, IBinaryComparatorFactory[] rtreeCmpFactories, + IBinaryComparatorFactory[] btreeCmpFactories, IPrimitiveValueProviderFactory[] valueProviderFactories, + RTreePolicyType rtreePolicyType, double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy, + ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, ILinearizeComparatorFactory linearizeCmpFactory, int[] rtreeFields, int[] buddyBTreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, int[] filterFields, boolean durable, boolean isPointMBR, IMetadataPageManagerFactory freePageManagerFactory) - throws TreeIndexException, HyracksDataException { + throws HyracksDataException { int valueFieldCount = buddyBTreeFields.length; int keyFieldCount = typeTraits.length - valueFieldCount; ITypeTraits[] btreeTypeTraits = new ITypeTraits[valueFieldCount]; for (int i = 0; i < valueFieldCount; i++) { btreeTypeTraits[i] = typeTraits[buddyBTreeFields[i]]; } - ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = new LSMTypeAwareTupleWriterFactory( - typeTraits, false); + ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = + new LSMTypeAwareTupleWriterFactory(typeTraits, false); ITreeIndexTupleWriterFactory rtreeLeafFrameTupleWriterFactory = null; if (isPointMBR) { - rtreeLeafFrameTupleWriterFactory = new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, - valueFieldCount, false); + rtreeLeafFrameTupleWriterFactory = + new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, valueFieldCount, false); } else { rtreeLeafFrameTupleWriterFactory = rtreeInteriorFrameTupleWriterFactory; } - ITreeIndexTupleWriterFactory btreeTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(btreeTypeTraits, - true); + ITreeIndexTupleWriterFactory btreeTupleWriterFactory = + new LSMTypeAwareTupleWriterFactory(btreeTypeTraits, true); ITreeIndexFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( rtreeInteriorFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); ITreeIndexFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, @@ -108,9 +107,9 @@ public class LSMRTreeUtils { TreeIndexFactory diskRTreeFactory = new RTreeFactory(ioManager, diskBufferCache, diskFileMapProvider, freePageManagerFactory, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, rtreeCmpFactories, typeTraits.length, isPointMBR); - TreeIndexFactory diskBTreeFactory = new BTreeFactory(ioManager, diskBufferCache, diskFileMapProvider, - freePageManagerFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory, btreeCmpFactories, - btreeTypeTraits.length); + TreeIndexFactory diskBTreeFactory = + new BTreeFactory(ioManager, diskBufferCache, diskFileMapProvider, freePageManagerFactory, + btreeInteriorFrameFactory, btreeLeafFrameFactory, btreeCmpFactories, btreeTypeTraits.length); int[] comparatorFields = { 0 }; IBinaryComparatorFactory[] linearizerArray = { linearizeCmpFactory }; @@ -119,8 +118,8 @@ public class LSMRTreeUtils { for (int i = 0; i < btreeCmpFactories.length; i++) { bloomFilterKeyFields[i] = i; } - BloomFilterFactory bloomFilterFactory = new BloomFilterFactory(diskBufferCache, diskFileMapProvider, - bloomFilterKeyFields); + BloomFilterFactory bloomFilterFactory = + new BloomFilterFactory(diskBufferCache, diskFileMapProvider, bloomFilterKeyFields); LSMComponentFilterFactory filterFactory = null; LSMComponentFilterFrameFactory filterFrameFactory = null; @@ -131,16 +130,14 @@ public class LSMRTreeUtils { filterFrameFactory = new LSMComponentFilterFrameFactory(filterTupleWriterFactory); filterManager = new LSMComponentFilterManager(filterFrameFactory); } - ILSMIndexFileManager fileNameManager = new LSMRTreeFileManager(ioManager, diskFileMapProvider, file, - diskRTreeFactory, - diskBTreeFactory); + ILSMIndexFileManager fileNameManager = + new LSMRTreeFileManager(ioManager, diskFileMapProvider, file, diskRTreeFactory, diskBTreeFactory); LSMRTree lsmTree = new LSMRTree(ioManager, virtualBufferCaches, rtreeInteriorFrameFactory, - rtreeLeafFrameFactory, - btreeInteriorFrameFactory, btreeLeafFrameFactory, fileNameManager, diskRTreeFactory, diskBTreeFactory, - bloomFilterFactory, filterFactory, filterFrameFactory, filterManager, bloomFilterFalsePositiveRate, - diskFileMapProvider, typeTraits.length, rtreeCmpFactories, btreeCmpFactories, linearizeCmpFactory, - comparatorFields, linearizerArray, mergePolicy, opTracker, ioScheduler, ioOpCallback, rtreeFields, - buddyBTreeFields, filterFields, durable, isPointMBR); + rtreeLeafFrameFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory, fileNameManager, + diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, filterFactory, filterFrameFactory, + filterManager, bloomFilterFalsePositiveRate, diskFileMapProvider, typeTraits.length, rtreeCmpFactories, + btreeCmpFactories, linearizeCmpFactory, comparatorFields, linearizerArray, mergePolicy, opTracker, + ioScheduler, ioOpCallback, rtreeFields, buddyBTreeFields, filterFields, durable, isPointMBR); return lsmTree; } @@ -153,18 +150,18 @@ public class LSMRTreeUtils { ILSMIOOperationCallback ioOpCallback, ILinearizeComparatorFactory linearizerCmpFactory, int[] rtreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, int[] filterFields, boolean durable, boolean isPointMBR, IMetadataPageManagerFactory freePageManagerFactory) - throws TreeIndexException, HyracksDataException { - ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = new LSMRTreeTupleWriterFactory(typeTraits, - false); + throws HyracksDataException { + ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = + new LSMRTreeTupleWriterFactory(typeTraits, false); ITreeIndexTupleWriterFactory rtreeLeafFrameTupleWriterFactory; ITreeIndexTupleWriterFactory rtreeLeafFrameCopyTupleWriterFactory; if (isPointMBR) { int keyFieldCount = rtreeCmpFactories.length; int valueFieldCount = btreeCmpFactories.length - keyFieldCount; - rtreeLeafFrameTupleWriterFactory = new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, - valueFieldCount, true); - rtreeLeafFrameCopyTupleWriterFactory = new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, - valueFieldCount, true); + rtreeLeafFrameTupleWriterFactory = + new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, valueFieldCount, true); + rtreeLeafFrameCopyTupleWriterFactory = + new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, valueFieldCount, true); } else { rtreeLeafFrameTupleWriterFactory = new LSMRTreeTupleWriterFactory(typeTraits, false); @@ -193,8 +190,8 @@ public class LSMRTreeUtils { // The first field is for the sorted curve (e.g. Hilbert curve), and the // second field is for the primary key. int[] comparatorFields = new int[btreeCmpFactories.length - rtreeCmpFactories.length + 1]; - IBinaryComparatorFactory[] linearizerArray = new IBinaryComparatorFactory[btreeCmpFactories.length - - rtreeCmpFactories.length + 1]; + IBinaryComparatorFactory[] linearizerArray = + new IBinaryComparatorFactory[btreeCmpFactories.length - rtreeCmpFactories.length + 1]; comparatorFields[0] = 0; for (int i = 1; i < comparatorFields.length; i++) { @@ -216,9 +213,8 @@ public class LSMRTreeUtils { filterFrameFactory = new LSMComponentFilterFrameFactory(filterTupleWriterFactory); filterManager = new LSMComponentFilterManager(filterFrameFactory); } - ILSMIndexFileManager fileNameManager = new LSMRTreeWithAntiMatterTuplesFileManager(ioManager, - diskFileMapProvider, file, - diskRTreeFactory); + ILSMIndexFileManager fileNameManager = + new LSMRTreeWithAntiMatterTuplesFileManager(ioManager, diskFileMapProvider, file, diskRTreeFactory); LSMRTreeWithAntiMatterTuples lsmTree = new LSMRTreeWithAntiMatterTuples(ioManager, virtualBufferCaches, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory, fileNameManager, diskRTreeFactory, bulkLoadRTreeFactory, filterFactory, filterFrameFactory, @@ -229,15 +225,14 @@ public class LSMRTreeUtils { } public static ExternalRTree createExternalRTree(IIOManager ioManager, FileReference file, - IBufferCache diskBufferCache, - IFileMapProvider diskFileMapProvider, ITypeTraits[] typeTraits, + IBufferCache diskBufferCache, IFileMapProvider diskFileMapProvider, ITypeTraits[] typeTraits, IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, IPrimitiveValueProviderFactory[] valueProviderFactories, RTreePolicyType rtreePolicyType, double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, ILinearizeComparatorFactory linearizeCmpFactory, int[] buddyBTreeFields, int startWithVersion, boolean durable, boolean isPointMBR, IMetadataPageManagerFactory freePageManagerFactory) - throws TreeIndexException { + throws HyracksDataException { int keyFieldCount = rtreeCmpFactories.length; int valueFieldCount = typeTraits.length - keyFieldCount; @@ -245,17 +240,17 @@ public class LSMRTreeUtils { for (int i = 0; i < buddyBTreeFields.length; i++) { btreeTypeTraits[i] = typeTraits[buddyBTreeFields[i]]; } - ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = new LSMTypeAwareTupleWriterFactory( - typeTraits, false); + ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = + new LSMTypeAwareTupleWriterFactory(typeTraits, false); ITreeIndexTupleWriterFactory rtreeLeafFrameTupleWriterFactory = null; if (isPointMBR) { - rtreeLeafFrameTupleWriterFactory = new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, - valueFieldCount, false); + rtreeLeafFrameTupleWriterFactory = + new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, valueFieldCount, false); } else { rtreeLeafFrameTupleWriterFactory = rtreeInteriorFrameTupleWriterFactory; } - ITreeIndexTupleWriterFactory btreeTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(btreeTypeTraits, - true); + ITreeIndexTupleWriterFactory btreeTupleWriterFactory = + new LSMTypeAwareTupleWriterFactory(btreeTypeTraits, true); ITreeIndexFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( rtreeInteriorFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); ITreeIndexFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, @@ -265,9 +260,9 @@ public class LSMRTreeUtils { TreeIndexFactory diskRTreeFactory = new RTreeFactory(ioManager, diskBufferCache, diskFileMapProvider, freePageManagerFactory, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, rtreeCmpFactories, typeTraits.length, isPointMBR); - TreeIndexFactory diskBTreeFactory = new BTreeFactory(ioManager, diskBufferCache, diskFileMapProvider, - freePageManagerFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory, btreeCmpFactories, - btreeTypeTraits.length); + TreeIndexFactory diskBTreeFactory = + new BTreeFactory(ioManager, diskBufferCache, diskFileMapProvider, freePageManagerFactory, + btreeInteriorFrameFactory, btreeLeafFrameFactory, btreeCmpFactories, btreeTypeTraits.length); int[] comparatorFields = { 0 }; IBinaryComparatorFactory[] linearizerArray = { linearizeCmpFactory }; @@ -275,12 +270,11 @@ public class LSMRTreeUtils { for (int i = 0; i < btreeCmpFactories.length; i++) { bloomFilterKeyFields[i] = i; } - BloomFilterFactory bloomFilterFactory = new BloomFilterFactory(diskBufferCache, diskFileMapProvider, - bloomFilterKeyFields); + BloomFilterFactory bloomFilterFactory = + new BloomFilterFactory(diskBufferCache, diskFileMapProvider, bloomFilterKeyFields); - ILSMIndexFileManager fileNameManager = new LSMRTreeFileManager(ioManager, diskFileMapProvider, file, - diskRTreeFactory, - diskBTreeFactory); + ILSMIndexFileManager fileNameManager = + new LSMRTreeFileManager(ioManager, diskFileMapProvider, file, diskRTreeFactory, diskBTreeFactory); ExternalRTree lsmTree = new ExternalRTree(ioManager, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory, fileNameManager, diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, bloomFilterFalsePositiveRate, diskFileMapProvider, typeTraits.length, @@ -291,10 +285,10 @@ public class LSMRTreeUtils { } public static ILinearizeComparatorFactory proposeBestLinearizer(ITypeTraits[] typeTraits, int numKeyFields) - throws TreeIndexException { + throws HyracksDataException { for (int i = 0; i < numKeyFields; i++) { if (!(typeTraits[i].getClass().equals(typeTraits[0].getClass()))) { - throw new TreeIndexException("Cannot propose linearizer if dimensions have different types"); + throw HyracksDataException.create(ErrorCode.CANNOT_PROPOSE_LINEARIZER_DIFF_DIMENSIONS); } } @@ -306,6 +300,7 @@ public class LSMRTreeUtils { return new ZCurveIntComparatorFactory(numKeyFields / 2); } - throw new TreeIndexException("Cannot propose linearizer"); + throw HyracksDataException.create(ErrorCode.CANNOT_PROPOSE_LINEARIZER_FOR_TYPE, + typeTraits[0].getClass().getSimpleName()); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeInteriorFrame.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeInteriorFrame.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeInteriorFrame.java index 892b715..b941989 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeInteriorFrame.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeInteriorFrame.java @@ -21,7 +21,6 @@ package org.apache.hyracks.storage.am.rtree.api; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.common.api.TreeIndexException; import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; import org.apache.hyracks.storage.am.rtree.impls.PathList; @@ -41,7 +40,7 @@ public interface IRTreeInteriorFrame extends IRTreeFrame { public int findTupleByPointer(ITupleReference tuple, PathList traverseList, int parentIndex, MultiComparator cmp) throws HyracksDataException; - public void adjustKey(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws TreeIndexException; + public void adjustKey(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws HyracksDataException; public void enlarge(ITupleReference tuple, MultiComparator cmp) throws HyracksDataException; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java index efdb67f..e24ab6b 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Collections; import org.apache.hyracks.api.dataflow.value.IBinaryComparator; +import org.apache.hyracks.api.exceptions.ErrorCode; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory; import org.apache.hyracks.data.std.primitive.IntegerPointable; @@ -30,7 +31,6 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProvider; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter; -import org.apache.hyracks.storage.am.common.api.TreeIndexException; import org.apache.hyracks.storage.am.common.frames.AbstractSlotManager; import org.apache.hyracks.storage.am.common.frames.FrameOpSpaceStatus; import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; @@ -41,12 +41,12 @@ import org.apache.hyracks.storage.am.rtree.impls.PathList; public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteriorFrame { public static final int childPtrSize = 4; - private IBinaryComparator childPtrCmp = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) - .createBinaryComparator(); + private IBinaryComparator childPtrCmp = + PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator(); private final int keyFieldCount; public RTreeNSMInteriorFrame(ITreeIndexTupleWriter tupleWriter, IPrimitiveValueProvider[] keyValueProviders, - RTreePolicyType rtreePolicyType, boolean isPointMBR) { + RTreePolicyType rtreePolicyType, boolean isPointMBR) { super(tupleWriter, keyValueProviders, rtreePolicyType, isPointMBR); keyFieldCount = keyValueProviders.length; frameTuple.setFieldCount(keyFieldCount); @@ -130,7 +130,8 @@ public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteri if (c == 0) { return i; } else { - int pageId = IntegerPointable.getInteger(frameTuple.getFieldData(cmp.getKeyFieldCount() - 1), getChildPointerOff(frameTuple)); + int pageId = IntegerPointable.getInteger(frameTuple.getFieldData(cmp.getKeyFieldCount() - 1), + getChildPointerOff(frameTuple)); traverseList.add(pageId, -1, parentIndex); } } @@ -197,19 +198,15 @@ public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteri } @Override - public void adjustKey(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws TreeIndexException { + public void adjustKey(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws HyracksDataException { frameTuple.setFieldCount(cmp.getKeyFieldCount()); if (tupleIndex == -1) { - try { - tupleIndex = findTupleByPointer(tuple, cmp); - } catch (HyracksDataException e) { - throw new TreeIndexException(e); - } + tupleIndex = findTupleByPointer(tuple, cmp); } if (tupleIndex != -1) { tupleWriter.writeTuple(tuple, buf.array(), getTupleOffset(tupleIndex)); } else { - throw new TreeIndexException("Error: Faild to find a tuple in a page"); + throw HyracksDataException.create(ErrorCode.FAILED_TO_FIND_TUPLE); } @@ -217,9 +214,9 @@ public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteri protected int pointerCmp(ITupleReference tupleA, ITupleReference tupleB, MultiComparator cmp) throws HyracksDataException { - return childPtrCmp - .compare(tupleA.getFieldData(cmp.getKeyFieldCount() - 1), getChildPointerOff(tupleA), childPtrSize, - tupleB.getFieldData(cmp.getKeyFieldCount() - 1), getChildPointerOff(tupleB), childPtrSize); + return childPtrCmp.compare(tupleA.getFieldData(cmp.getKeyFieldCount() - 1), getChildPointerOff(tupleA), + childPtrSize, tupleB.getFieldData(cmp.getKeyFieldCount() - 1), getChildPointerOff(tupleB), + childPtrSize); } @Override @@ -243,8 +240,8 @@ public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteri buf.putInt(Constants.TUPLE_COUNT_OFFSET, buf.getInt(Constants.TUPLE_COUNT_OFFSET) + 1); buf.putInt(Constants.FREE_SPACE_OFFSET, buf.getInt(Constants.FREE_SPACE_OFFSET) + tupleSize); - buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) - tupleSize - slotManager - .getSlotSize()); + buf.putInt(TOTAL_FREE_SPACE_OFFSET, + buf.getInt(TOTAL_FREE_SPACE_OFFSET) - tupleSize - slotManager.getSlotSize()); } @@ -298,8 +295,9 @@ public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteri for (int i = 0; i < tupleCount; i++) { int tupleOff = slotManager.getTupleOff(slotManager.getSlotOff(i)); frameTuple.resetByTupleOffset(buf.array(), tupleOff); - int intVal = IntegerPointable.getInteger(buf.array(), frameTuple.getFieldStart(frameTuple.getFieldCount() - 1) - + frameTuple.getFieldLength(frameTuple.getFieldCount() - 1)); + int intVal = + IntegerPointable.getInteger(buf.array(), frameTuple.getFieldStart(frameTuple.getFieldCount() - 1) + + frameTuple.getFieldLength(frameTuple.getFieldCount() - 1)); ret.add(intVal); } return ret;