You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by am...@apache.org on 2017/04/15 21:44:47 UTC
[04/13] asterixdb git commit: Cleanup storage exceptions
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/impls/RTree.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
index 9cd16c4..7b2ed48 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
@@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicLong;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+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.dataflow.common.data.accessors.ITupleReference;
@@ -41,8 +42,6 @@ import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
-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.frames.AbstractSlotManager;
import org.apache.hyracks.storage.am.common.frames.FrameOpSpaceStatus;
import org.apache.hyracks.storage.am.common.impls.AbstractTreeIndex;
@@ -159,63 +158,6 @@ public class RTree extends AbstractTreeIndex {
modificationCallback);
}
- private void insert(ITupleReference tuple, IIndexOperationContext ictx)
- throws HyracksDataException, TreeIndexException {
- RTreeOpContext ctx = (RTreeOpContext) ictx;
- int tupleSize = Math.max(ctx.leafFrame.getBytesRequiredToWriteTuple(tuple),
- ctx.interiorFrame.getBytesRequiredToWriteTuple(tuple));
- if (tupleSize > maxTupleSize) {
- throw new TreeIndexException("Record size (" + tupleSize + ") larger than maximum acceptable record size ("
- + maxTupleSize + ")");
- }
- ctx.reset();
- ctx.setTuple(tuple);
- ctx.splitKey.reset();
- ctx.splitKey.getLeftTuple().setFieldCount(cmpFactories.length);
- ctx.splitKey.getRightTuple().setFieldCount(cmpFactories.length);
- ctx.modificationCallback.before(tuple);
-
- int maxFieldPos = cmpFactories.length / 2;
- for (int i = 0; i < maxFieldPos; i++) {
- int j = maxFieldPos + i;
- int c = ctx.cmp.getComparators()[i].compare(tuple.getFieldData(i), tuple.getFieldStart(i),
- tuple.getFieldLength(i), tuple.getFieldData(j), tuple.getFieldStart(j), tuple.getFieldLength(j));
- if (c > 0) {
- throw new IllegalArgumentException("The low key point has larger coordinates than the high key point.");
- }
- }
-
- try {
- ICachedPage leafNode = findLeaf(ctx);
-
- int pageId = ctx.pathList.getLastPageId();
- ctx.pathList.moveLast();
- insertTuple(leafNode, pageId, ctx.getTuple(), ctx, true);
-
- while (true) {
- if (ctx.splitKey.getLeftPageBuffer() != null) {
- updateParentForInsert(ctx);
- } else {
- break;
- }
- }
- } finally {
- for (int i = ctx.NSNUpdates.size() - 1; i >= 0; i--) {
- ICachedPage node = ctx.NSNUpdates.get(i);
- ctx.interiorFrame.setPage(node);
- ctx.interiorFrame.setPageNsn(incrementGlobalNsn());
- }
-
- for (int i = ctx.LSNUpdates.size() - 1; i >= 0; i--) {
- ICachedPage node = ctx.LSNUpdates.get(i);
- ctx.interiorFrame.setPage(node);
- ctx.interiorFrame.setPageLsn(incrementGlobalNsn());
- node.releaseWriteLatch(true);
- bufferCache.unpin(node);
- }
- }
- }
-
private ICachedPage findLeaf(RTreeOpContext ctx) throws HyracksDataException {
int pageId = rootPage;
boolean writeLatched = false;
@@ -342,7 +284,7 @@ public class RTree extends AbstractTreeIndex {
}
private void insertTuple(ICachedPage node, int pageId, ITupleReference tuple, RTreeOpContext ctx, boolean isLeaf)
- throws HyracksDataException, TreeIndexException {
+ throws HyracksDataException {
boolean succeeded = false;
FrameOpSpaceStatus spaceStatus;
if (!isLeaf) {
@@ -412,8 +354,7 @@ public class RTree extends AbstractTreeIndex {
rightFrame.setPage(rightNode);
rightFrame.initBuffer(ctx.interiorFrame.getLevel());
rightFrame.setRightPage(ctx.interiorFrame.getRightPage());
- ctx.interiorFrame.split(rightFrame, tuple, ctx.splitKey, ctx,
- bufferCache);
+ ctx.interiorFrame.split(rightFrame, tuple, ctx.splitKey, ctx, bufferCache);
ctx.interiorFrame.setRightPage(rightPageId);
} else {
rightFrame = (IRTreeFrame) leafFrameFactory.createFrame();
@@ -421,8 +362,7 @@ public class RTree extends AbstractTreeIndex {
rightFrame.initBuffer((byte) 0);
rightFrame.setRightPage(ctx.interiorFrame.getRightPage());
ctx.modificationCallback.found(null, tuple);
- ctx.leafFrame.split(rightFrame, tuple, ctx.splitKey, ctx,
- bufferCache);
+ ctx.leafFrame.split(rightFrame, tuple, ctx.splitKey, ctx, bufferCache);
ctx.leafFrame.setRightPage(rightPageId);
}
succeeded = true;
@@ -448,8 +388,8 @@ public class RTree extends AbstractTreeIndex {
ctx.splitKey.setPages(pageId, rightPageId);
if (pageId == rootPage) {
int newLeftId = freePageManager.takePage(ctx.metaFrame);
- ICachedPage newLeftNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, newLeftId),
- true);
+ ICachedPage newLeftNode =
+ bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, newLeftId), true);
newLeftNode.acquireWriteLatch();
succeeded = false;
try {
@@ -503,7 +443,7 @@ public class RTree extends AbstractTreeIndex {
}
}
- private void updateParentForInsert(RTreeOpContext ctx) throws HyracksDataException, TreeIndexException {
+ private void updateParentForInsert(RTreeOpContext ctx) throws HyracksDataException {
boolean succeeded = false;
boolean writeLatched = false;
int parentId = ctx.pathList.getLastPageId();
@@ -542,7 +482,7 @@ public class RTree extends AbstractTreeIndex {
if (foundParent) {
try {
ctx.interiorFrame.adjustKey(ctx.splitKey.getLeftTuple(), -1, ctx.cmp);
- } catch (TreeIndexException e) {
+ } catch (Exception e) {
if (writeLatched) {
parentNode.releaseWriteLatch(true);
writeLatched = false;
@@ -571,7 +511,7 @@ public class RTree extends AbstractTreeIndex {
updateParentForInsert(ctx);
}
- private void findPath(RTreeOpContext ctx) throws TreeIndexException, HyracksDataException {
+ private void findPath(RTreeOpContext ctx) throws HyracksDataException {
boolean readLatched = false;
int pageId = rootPage;
int parentIndex = -1;
@@ -596,7 +536,7 @@ public class RTree extends AbstractTreeIndex {
ctx.traverseList.moveFirst();
if (ctx.interiorFrame.isLeaf()) {
- throw new TreeIndexException("Error: Failed to re-find parent of a page in the tree.");
+ throw HyracksDataException.create(ErrorCode.FAILED_TO_RE_FIND_PARENT);
}
if (pageId != rootPage) {
@@ -635,7 +575,7 @@ public class RTree extends AbstractTreeIndex {
}
}
- private void delete(ITupleReference tuple, RTreeOpContext ctx) throws HyracksDataException, TreeIndexException {
+ private void delete(ITupleReference tuple, RTreeOpContext ctx) throws HyracksDataException {
ctx.reset();
ctx.setTuple(tuple);
ctx.splitKey.reset();
@@ -764,7 +704,7 @@ public class RTree extends AbstractTreeIndex {
}
private void search(ITreeIndexCursor cursor, ISearchPredicate searchPred, RTreeOpContext ctx)
- throws HyracksDataException, IndexException {
+ throws HyracksDataException {
ctx.reset();
ctx.cursor = cursor;
@@ -828,19 +768,19 @@ public class RTree extends AbstractTreeIndex {
}
@Override
- public void insert(ITupleReference tuple) throws HyracksDataException, TreeIndexException {
+ public void insert(ITupleReference tuple) throws HyracksDataException {
ctx.setOperation(IndexOperation.INSERT);
- rtree.insert(tuple, ctx);
+ insert(tuple, ctx);
}
@Override
- public void update(ITupleReference tuple) throws HyracksDataException, TreeIndexException {
+ public void update(ITupleReference tuple) throws HyracksDataException {
ctx.setOperation(IndexOperation.UPDATE);
rtree.update(tuple, ctx);
}
@Override
- public void delete(ITupleReference tuple) throws HyracksDataException, TreeIndexException {
+ public void delete(ITupleReference tuple) throws HyracksDataException {
ctx.setOperation(IndexOperation.DELETE);
rtree.delete(tuple, ctx);
}
@@ -852,8 +792,7 @@ public class RTree extends AbstractTreeIndex {
}
@Override
- public void search(IIndexCursor cursor, ISearchPredicate searchPred)
- throws HyracksDataException, IndexException {
+ public void search(IIndexCursor cursor, ISearchPredicate searchPred) throws HyracksDataException {
ctx.setOperation(IndexOperation.SEARCH);
rtree.search((ITreeIndexCursor) cursor, searchPred, ctx);
}
@@ -874,45 +813,97 @@ public class RTree extends AbstractTreeIndex {
}
@Override
- public void upsert(ITupleReference tuple) throws HyracksDataException, TreeIndexException {
+ public void upsert(ITupleReference tuple) throws HyracksDataException {
throw new UnsupportedOperationException(
"The RTree does not support the notion of keys, therefore upsert does not make sense.");
}
+
+ private void insert(ITupleReference tuple, IIndexOperationContext ictx) throws HyracksDataException {
+ RTreeOpContext ctx = (RTreeOpContext) ictx;
+ int tupleSize = Math.max(ctx.leafFrame.getBytesRequiredToWriteTuple(tuple),
+ ctx.interiorFrame.getBytesRequiredToWriteTuple(tuple));
+ if (tupleSize > maxTupleSize) {
+ throw HyracksDataException.create(ErrorCode.RECORD_IS_TOO_LARGE, tupleSize, maxTupleSize);
+ }
+ ctx.reset();
+ ctx.setTuple(tuple);
+ ctx.splitKey.reset();
+ ctx.splitKey.getLeftTuple().setFieldCount(cmpFactories.length);
+ ctx.splitKey.getRightTuple().setFieldCount(cmpFactories.length);
+ ctx.modificationCallback.before(tuple);
+
+ int maxFieldPos = cmpFactories.length / 2;
+ for (int i = 0; i < maxFieldPos; i++) {
+ int j = maxFieldPos + i;
+ int c = ctx.cmp.getComparators()[i].compare(tuple.getFieldData(i), tuple.getFieldStart(i),
+ tuple.getFieldLength(i), tuple.getFieldData(j), tuple.getFieldStart(j),
+ tuple.getFieldLength(j));
+ if (c > 0) {
+ throw new IllegalArgumentException(
+ "The low key point has larger coordinates than the high key point.");
+ }
+ }
+
+ try {
+ ICachedPage leafNode = findLeaf(ctx);
+
+ int pageId = ctx.pathList.getLastPageId();
+ ctx.pathList.moveLast();
+ insertTuple(leafNode, pageId, ctx.getTuple(), ctx, true);
+
+ while (true) {
+ if (ctx.splitKey.getLeftPageBuffer() != null) {
+ updateParentForInsert(ctx);
+ } else {
+ break;
+ }
+ }
+ } finally {
+ for (int i = ctx.NSNUpdates.size() - 1; i >= 0; i--) {
+ ICachedPage node = ctx.NSNUpdates.get(i);
+ ctx.interiorFrame.setPage(node);
+ ctx.interiorFrame.setPageNsn(incrementGlobalNsn());
+ }
+
+ for (int i = ctx.LSNUpdates.size() - 1; i >= 0; i--) {
+ ICachedPage node = ctx.LSNUpdates.get(i);
+ ctx.interiorFrame.setPage(node);
+ ctx.interiorFrame.setPageLsn(incrementGlobalNsn());
+ node.releaseWriteLatch(true);
+ bufferCache.unpin(node);
+ }
+ }
+ }
}
@Override
public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
- boolean checkIfEmptyIndex) throws TreeIndexException {
+ boolean checkIfEmptyIndex) throws HyracksDataException {
// TODO: verifyInput currently does nothing.
- try {
- return new RTreeBulkLoader(fillFactor);
- } catch (HyracksDataException e) {
- throw new TreeIndexException(e);
- }
+ return new RTreeBulkLoader(fillFactor);
}
public class RTreeBulkLoader extends AbstractTreeIndex.AbstractTreeIndexBulkLoader {
ITreeIndexFrame lowerFrame, prevInteriorFrame;
- RTreeTypeAwareTupleWriter interiorFrameTupleWriter = ((RTreeTypeAwareTupleWriter) interiorFrame
- .getTupleWriter());
+ RTreeTypeAwareTupleWriter interiorFrameTupleWriter =
+ ((RTreeTypeAwareTupleWriter) interiorFrame.getTupleWriter());
ITreeIndexTupleReference mbrTuple = interiorFrame.createTupleReference();
ByteBuffer mbr;
List<Integer> prevNodeFrontierPages = new ArrayList<>();
- public RTreeBulkLoader(float fillFactor) throws TreeIndexException, HyracksDataException {
+ public RTreeBulkLoader(float fillFactor) throws HyracksDataException {
super(fillFactor);
prevInteriorFrame = interiorFrameFactory.createFrame();
}
@Override
- public void add(ITupleReference tuple) throws IndexException, HyracksDataException {
+ public void add(ITupleReference tuple) throws HyracksDataException {
try {
int leafFrameTupleSize = leafFrame.getBytesRequiredToWriteTuple(tuple);
int interiorFrameTupleSize = interiorFrame.getBytesRequiredToWriteTuple(tuple);
int tupleSize = Math.max(leafFrameTupleSize, interiorFrameTupleSize);
if (tupleSize > maxTupleSize) {
- throw new TreeIndexException("Space required for record (" + tupleSize
- + ") larger than maximum acceptable size (" + maxTupleSize + ")");
+ throw HyracksDataException.create(ErrorCode.RECORD_IS_TOO_LARGE, tupleSize, maxTupleSize);
}
NodeFrontier leafFrontier = nodeFrontiers.get(0);
@@ -942,8 +933,8 @@ public class RTree extends AbstractTreeIndex {
}
pagesToWrite.clear();
- leafFrontier.page = bufferCache
- .confiscatePage(BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId));
+ leafFrontier.page =
+ bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId));
leafFrame.setPage(leafFrontier.page);
leafFrame.initBuffer((byte) 0);
@@ -1035,9 +1026,9 @@ public class RTree extends AbstractTreeIndex {
((RTreeNSMFrame) lowerFrame).adjustMBR();
if (mbr == null) {
- int bytesRequired = interiorFrameTupleWriter
- .bytesRequired(((RTreeNSMFrame) lowerFrame).getMBRTuples()[0], 0, cmp.getKeyFieldCount())
- + ((RTreeNSMInteriorFrame) interiorFrame).getChildPointerSize();
+ int bytesRequired =
+ interiorFrameTupleWriter.bytesRequired(((RTreeNSMFrame) lowerFrame).getMBRTuples()[0], 0,
+ cmp.getKeyFieldCount()) + ((RTreeNSMInteriorFrame) interiorFrame).getChildPointerSize();
mbr = ByteBuffer.allocate(bytesRequired);
}
interiorFrameTupleWriter.writeTupleFields(((RTreeNSMFrame) lowerFrame).getMBRTuples(), 0, mbr, 0);
@@ -1049,8 +1040,8 @@ public class RTree extends AbstractTreeIndex {
// load where finalization can possibly lead to a split
//TODO: accomplish this without wasting 1 tuple
int sizeOfTwoTuples = 2 * (mbrTuple.getTupleSize() + RTreeNSMInteriorFrame.childPtrSize);
- FrameOpSpaceStatus spaceForTwoTuples = (((RTreeNSMInteriorFrame) interiorFrame)
- .hasSpaceInsert(sizeOfTwoTuples));
+ FrameOpSpaceStatus spaceForTwoTuples =
+ (((RTreeNSMInteriorFrame) interiorFrame).hasSpaceInsert(sizeOfTwoTuples));
if (spaceForTwoTuples != FrameOpSpaceStatus.SUFFICIENT_CONTIGUOUS_SPACE && !toRoot) {
int finalPageId = freePageManager.takePage(metaFrame);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
index 8988605..38486cd 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
@@ -28,6 +28,7 @@ import java.util.logging.Logger;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
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.data.std.accessors.PointableBinaryComparatorFactory;
import org.apache.hyracks.data.std.primitive.IntegerPointable;
@@ -47,9 +48,6 @@ import org.apache.hyracks.storage.am.common.api.IIndexCursor;
import org.apache.hyracks.storage.am.common.api.ITreeIndex;
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.TreeIndexException;
-import org.apache.hyracks.storage.am.common.api.UnsortedInputException;
-import org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException;
import org.apache.hyracks.storage.am.common.impls.TreeIndexDiskOrderScanCursor;
import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
import org.junit.Test;
@@ -61,7 +59,7 @@ public abstract class OrderedIndexExamplesTest {
protected abstract ITreeIndex createTreeIndex(ITypeTraits[] typeTraits, IBinaryComparatorFactory[] cmpFactories,
int[] bloomFilterKeyFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories,
- int[] btreeFields, int[] filterFields) throws TreeIndexException, HyracksDataException;
+ int[] btreeFields, int[] filterFields) throws HyracksDataException;
/**
* Fixed-Length Key,Value Example. Create a tree index with one fixed-length
@@ -80,8 +78,8 @@ public abstract class OrderedIndexExamplesTest {
typeTraits[0] = IntegerPointable.TYPE_TRAITS;
typeTraits[1] = IntegerPointable.TYPE_TRAITS;
// Declare field serdes.
- ISerializerDeserializer[] fieldSerdes = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
+ ISerializerDeserializer[] fieldSerdes =
+ { IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
// Declare keys.
int keyFieldCount = 1;
@@ -102,8 +100,8 @@ public abstract class OrderedIndexExamplesTest {
}
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
int numInserts = 10000;
for (int i = 0; i < numInserts; i++) {
int f0 = rnd.nextInt() % numInserts;
@@ -116,7 +114,10 @@ public abstract class OrderedIndexExamplesTest {
}
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
long end = System.currentTimeMillis();
@@ -164,8 +165,8 @@ public abstract class OrderedIndexExamplesTest {
typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
// Declare field serdes.
- ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
- new UTF8StringSerializerDeserializer() };
+ ISerializerDeserializer[] fieldSerdes =
+ { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
// Declare keys.
int keyFieldCount = 1;
@@ -182,8 +183,8 @@ public abstract class OrderedIndexExamplesTest {
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
String key = "111";
String data = "XXX";
@@ -263,8 +264,8 @@ public abstract class OrderedIndexExamplesTest {
}
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
int numInserts = 10000;
for (int i = 0; i < 10000; i++) {
int f0 = rnd.nextInt() % 2000;
@@ -278,7 +279,10 @@ public abstract class OrderedIndexExamplesTest {
}
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
long end = System.currentTimeMillis();
@@ -324,8 +328,8 @@ public abstract class OrderedIndexExamplesTest {
typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
// Declare field serdes.
- ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
- new UTF8StringSerializerDeserializer() };
+ ISerializerDeserializer[] fieldSerdes =
+ { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
// Declare keys.
int keyFieldCount = 1;
@@ -346,8 +350,8 @@ public abstract class OrderedIndexExamplesTest {
}
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
// Max string length to be generated.
int maxLength = 10;
int numInserts = 10000;
@@ -362,7 +366,10 @@ public abstract class OrderedIndexExamplesTest {
}
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
long end = System.currentTimeMillis();
@@ -408,8 +415,8 @@ public abstract class OrderedIndexExamplesTest {
typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
// Declare field serdes.
- ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
- new UTF8StringSerializerDeserializer() };
+ ISerializerDeserializer[] fieldSerdes =
+ { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
// Declare keys.
int keyFieldCount = 1;
@@ -426,8 +433,8 @@ public abstract class OrderedIndexExamplesTest {
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
// Max string length to be generated.
int runs = 3;
for (int run = 0; run < runs; run++) {
@@ -455,7 +462,10 @@ public abstract class OrderedIndexExamplesTest {
try {
indexAccessor.insert(tuple);
insDone++;
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
insDoneCmp[i] = insDone;
}
@@ -474,7 +484,10 @@ public abstract class OrderedIndexExamplesTest {
try {
indexAccessor.delete(tuple);
delDone++;
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.UPDATE_OR_DELETE_NON_EXISTENT_KEY) {
+ throw e;
+ }
}
if (insDoneCmp[i] != delDone) {
if (LOGGER.isLoggable(Level.INFO)) {
@@ -514,8 +527,8 @@ public abstract class OrderedIndexExamplesTest {
typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
// Declare field serdes.
- ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
- new UTF8StringSerializerDeserializer() };
+ ISerializerDeserializer[] fieldSerdes =
+ { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
// Declare keys.
int keyFieldCount = 1;
@@ -533,8 +546,8 @@ public abstract class OrderedIndexExamplesTest {
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info("Inserting into tree...");
}
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
int maxLength = 10;
@@ -552,7 +565,10 @@ public abstract class OrderedIndexExamplesTest {
}
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
// Print before doing any updates.
@@ -573,11 +589,7 @@ public abstract class OrderedIndexExamplesTest {
LOGGER.info("Updating " + i);
}
}
- try {
- indexAccessor.update(tuple);
- } catch (TreeIndexException e) {
- } catch (UnsupportedOperationException e) {
- }
+ indexAccessor.update(tuple);
}
// Do another scan after a round of updates.
orderedScan(indexAccessor, fieldSerdes);
@@ -640,8 +652,8 @@ public abstract class OrderedIndexExamplesTest {
LOGGER.info(ins + " tuples loaded in " + (end - start) + "ms");
}
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
// Build low key.
ArrayTupleBuilder lowKeyTb = new ArrayTupleBuilder(1);
@@ -693,8 +705,8 @@ public abstract class OrderedIndexExamplesTest {
int ins = 1000;
for (int i = 1; i < ins; i++) {
- ITreeIndex treeIndex = createTreeIndex(typeTraits, cmpFactories, bloomFilterKeyFields, null, null, null,
- null);
+ ITreeIndex treeIndex =
+ createTreeIndex(typeTraits, cmpFactories, bloomFilterKeyFields, null, null, null, null);
treeIndex.create();
treeIndex.activate();
@@ -718,19 +730,17 @@ public abstract class OrderedIndexExamplesTest {
TupleUtils.createIntegerTuple(tb, tuple, key, 5);
try {
bulkLoader.add(tuple);
- } catch (UnsortedInputException e) {
- if (j != i) {
- fail("Unexpected exception: " + e.getMessage());
- }
- // Success.
-
- break;
- } catch (TreeIndexDuplicateKeyException e2) {
- if (j != i) {
- fail("Unexpected exception: " + e2.getMessage());
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() == ErrorCode.UNSORTED_LOAD_INPUT || e.getErrorCode() == ErrorCode.DUPLICATE_KEY
+ || e.getErrorCode() == ErrorCode.DUPLICATE_LOAD_INPUT) {
+ if (j != i) {
+ fail("Unexpected exception: " + e.getMessage());
+ }
+ // Success.
+ break;
+ } else {
+ throw e;
}
- // Success.
- break;
}
}
treeIndex.deactivate();
@@ -765,8 +775,8 @@ public abstract class OrderedIndexExamplesTest {
LOGGER.info("Disk-Order Scan:");
}
ITreeIndexAccessor treeIndexAccessor = (ITreeIndexAccessor) indexAccessor;
- TreeIndexDiskOrderScanCursor diskOrderCursor = (TreeIndexDiskOrderScanCursor) treeIndexAccessor
- .createDiskOrderScanCursor();
+ TreeIndexDiskOrderScanCursor diskOrderCursor =
+ (TreeIndexDiskOrderScanCursor) treeIndexAccessor.createDiskOrderScanCursor();
treeIndexAccessor.diskOrderScan(diskOrderCursor);
try {
while (diskOrderCursor.hasNext()) {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
index b9c0286..ec56549 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
@@ -34,7 +34,6 @@ import org.apache.hyracks.storage.am.common.IIndexTestWorkerFactory;
import org.apache.hyracks.storage.am.common.IndexMultiThreadTestDriver;
import org.apache.hyracks.storage.am.common.TestWorkloadConf;
import org.apache.hyracks.storage.am.common.api.IIndex;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
import org.apache.hyracks.storage.am.config.AccessMethodTestsConfig;
import org.junit.Test;
@@ -56,7 +55,7 @@ public abstract class OrderedIndexMultiThreadTest {
protected abstract void tearDown() throws HyracksDataException;
protected abstract IIndex createIndex(ITypeTraits[] typeTraits, IBinaryComparatorFactory[] cmpFactories,
- int[] bloomFilterKeyFields) throws TreeIndexException, HyracksDataException;
+ int[] bloomFilterKeyFields) throws HyracksDataException;
protected abstract IIndexTestWorkerFactory getWorkerFactory();
@@ -65,7 +64,7 @@ public abstract class OrderedIndexMultiThreadTest {
protected abstract String getIndexTypeName();
protected void runTest(ISerializerDeserializer[] fieldSerdes, int numKeys, int numThreads, TestWorkloadConf conf,
- String dataMsg) throws InterruptedException, TreeIndexException, HyracksDataException {
+ String dataMsg) throws InterruptedException, HyracksDataException {
setUp();
if (LOGGER.isLoggable(Level.INFO)) {
@@ -88,8 +87,8 @@ public abstract class OrderedIndexMultiThreadTest {
// 4 batches per thread.
int batchSize = (NUM_OPERATIONS / numThreads) / 4;
- IndexMultiThreadTestDriver driver = new IndexMultiThreadTestDriver(index, workerFactory, fieldSerdes, conf.ops,
- conf.opProbs);
+ IndexMultiThreadTestDriver driver =
+ new IndexMultiThreadTestDriver(index, workerFactory, fieldSerdes, conf.ops, conf.opProbs);
driver.init();
long[] times = driver.run(numThreads, 1, NUM_OPERATIONS, batchSize);
index.validate();
@@ -103,7 +102,7 @@ public abstract class OrderedIndexMultiThreadTest {
}
@Test
- public void oneIntKeyAndValue() throws InterruptedException, TreeIndexException, HyracksDataException {
+ public void oneIntKeyAndValue() throws InterruptedException, HyracksDataException {
ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE,
IntegerSerializerDeserializer.INSTANCE };
int numKeys = 1;
@@ -116,9 +115,9 @@ public abstract class OrderedIndexMultiThreadTest {
}
@Test
- public void oneStringKeyAndValue() throws InterruptedException, TreeIndexException, HyracksDataException {
- ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] {
- new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
+ public void oneStringKeyAndValue() throws InterruptedException, HyracksDataException {
+ ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
+ new UTF8StringSerializerDeserializer() };
int numKeys = 1;
String dataMsg = "One String Key And Value";
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
index 2a16ebe..970f49d 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
@@ -32,6 +32,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
@@ -47,8 +48,6 @@ import org.apache.hyracks.storage.am.common.TreeIndexTestUtils;
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.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.IndexException;
-import org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException;
import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
@SuppressWarnings("rawtypes")
@@ -58,13 +57,13 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
private static void compareActualAndExpected(ITupleReference actual, CheckTuple expected,
ISerializerDeserializer[] fieldSerdes) throws HyracksDataException {
for (int i = 0; i < fieldSerdes.length; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(actual.getFieldData(i), actual.getFieldStart(i),
- actual.getFieldLength(i));
+ ByteArrayInputStream inStream =
+ new ByteArrayInputStream(actual.getFieldData(i), actual.getFieldStart(i), actual.getFieldLength(i));
DataInput dataIn = new DataInputStream(inStream);
Object actualObj = fieldSerdes[i].deserialize(dataIn);
if (!actualObj.equals(expected.getField(i))) {
- fail("Actual and expected fields do not match on field " + i + ".\nExpected: " + expected.getField(i)
- + "\nActual : " + actualObj);
+ fail("Actual and expected fields do not match on field " + i + ".\nExpected: " + expected.getField(i)
+ + "\nActual : " + actualObj);
}
}
}
@@ -81,11 +80,11 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
CheckTuple high = checkTuples.floor(highKey);
if (low == null || high == null) {
// Must be empty.
- return new TreeSet<CheckTuple>();
+ return new TreeSet<>();
}
if (high.compareTo(low) < 0) {
// Must be empty.
- return new TreeSet<CheckTuple>();
+ return new TreeSet<>();
}
return checkTuples.subSet(low, true, high, true);
}
@@ -99,20 +98,20 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
MultiComparator lowKeyCmp = BTreeUtils.getSearchMultiComparator(ctx.getComparatorFactories(), lowKey);
MultiComparator highKeyCmp = BTreeUtils.getSearchMultiComparator(ctx.getComparatorFactories(), highKey);
IIndexCursor searchCursor = ctx.getIndexAccessor().createSearchCursor(false);
- RangePredicate rangePred = new RangePredicate(lowKey, highKey, lowKeyInclusive, highKeyInclusive, lowKeyCmp,
- highKeyCmp);
+ RangePredicate rangePred =
+ new RangePredicate(lowKey, highKey, lowKeyInclusive, highKeyInclusive, lowKeyCmp, highKeyCmp);
ctx.getIndexAccessor().search(searchCursor, rangePred);
// Get the subset of elements from the expected set within given key
// range.
CheckTuple lowKeyCheck = createCheckTupleFromTuple(lowKey, ctx.getFieldSerdes(), lowKeyCmp.getKeyFieldCount());
- CheckTuple highKeyCheck = createCheckTupleFromTuple(highKey, ctx.getFieldSerdes(),
- highKeyCmp.getKeyFieldCount());
+ CheckTuple highKeyCheck =
+ createCheckTupleFromTuple(highKey, ctx.getFieldSerdes(), highKeyCmp.getKeyFieldCount());
SortedSet<CheckTuple> expectedSubset = null;
if (lowKeyCmp.getKeyFieldCount() < ctx.getKeyFieldCount()
|| highKeyCmp.getKeyFieldCount() < ctx.getKeyFieldCount()) {
// Searching on a key prefix (low key or high key or both).
- expectedSubset = getPrefixExpectedSubset((TreeSet<CheckTuple>) ctx.getCheckTuples(), lowKeyCheck,
- highKeyCheck);
+ expectedSubset =
+ getPrefixExpectedSubset((TreeSet<CheckTuple>) ctx.getCheckTuples(), lowKeyCheck, highKeyCheck);
} else {
// Searching on all key fields.
expectedSubset = ((TreeSet<CheckTuple>) ctx.getCheckTuples()).subSet(lowKeyCheck, lowKeyInclusive,
@@ -189,7 +188,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
int fieldCount = ctx.getFieldCount();
int numKeyFields = ctx.getKeyFieldCount();
int[] fieldValues = new int[ctx.getFieldCount()];
- int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields));
+ int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / numKeyFields));
Collection<CheckTuple> tmpCheckTuples = createCheckTuplesCollection();
for (int i = 0; i < numTuples; i++) {
// Set keys.
@@ -214,7 +213,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
int fieldCount = ctx.getFieldCount();
int numKeyFields = ctx.getKeyFieldCount();
String[] fieldValues = new String[fieldCount];
- TreeSet<CheckTuple> tmpCheckTuples = new TreeSet<CheckTuple>();
+ TreeSet<CheckTuple> tmpCheckTuples = new TreeSet<>();
for (int i = 0; i < numTuples; i++) {
// Set keys.
for (int j = 0; j < numKeyFields; j++) {
@@ -238,7 +237,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
}
public static void insertCheckTuples(IIndexTestContext ctx, Collection<CheckTuple> checkTuples)
- throws HyracksDataException, IndexException {
+ throws HyracksDataException {
int fieldCount = ctx.getFieldCount();
int numTuples = checkTuples.size();
ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fieldCount);
@@ -283,8 +282,11 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
// Set expected values. Do this only after insertion succeeds
// because we ignore duplicate keys.
ctx.insertCheckTuple(createStringCheckTuple(fieldValues, ctx.getKeyFieldCount()), ctx.getCheckTuples());
- } catch (TreeIndexDuplicateKeyException e) {
+ } catch (HyracksDataException e) {
// Ignore duplicate key insertions.
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
}
@@ -320,7 +322,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
int fieldCount = ctx.getFieldCount();
int numKeyFields = ctx.getKeyFieldCount();
String[] fieldValues = new String[fieldCount];
- TreeSet<CheckTuple> tmpCheckTuples = new TreeSet<CheckTuple>();
+ TreeSet<CheckTuple> tmpCheckTuples = new TreeSet<>();
for (int i = 0; i < numTuples; i++) {
// Set keys.
for (int j = 0; j < numKeyFields; j++) {
@@ -343,6 +345,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
}
}
+ @Override
public void upsertIntTuples(IIndexTestContext ictx, int numTuples, Random rnd) throws Exception {
OrderedIndexTestContext ctx = (OrderedIndexTestContext) ictx;
int fieldCount = ctx.getFieldCount();
@@ -351,7 +354,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
// Scale range of values according to number of keys.
// For example, for 2 keys we want the square root of numTuples, for 3
// keys the cube root of numTuples, etc.
- int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields));
+ int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / numKeyFields));
for (int i = 0; i < numTuples; i++) {
// Set keys.
setIntKeyFields(fieldValues, numKeyFields, maxValue, rnd);
@@ -413,9 +416,9 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
}
public CheckTuple createStringCheckTuple(String[] fieldValues, int numKeyFields) {
- CheckTuple<String> checkTuple = new CheckTuple<String>(fieldValues.length, numKeyFields);
+ CheckTuple<String> checkTuple = new CheckTuple<>(fieldValues.length, numKeyFields);
for (String s : fieldValues) {
- checkTuple.appendField((String) s);
+ checkTuple.appendField(s);
}
return checkTuple;
}
@@ -475,7 +478,7 @@ public class OrderedIndexTestUtils extends TreeIndexTestUtils {
@Override
protected CheckTuple createIntCheckTuple(int[] fieldValues, int numKeyFields) {
- CheckTuple<Integer> checkTuple = new CheckTuple<Integer>(fieldValues.length, numKeyFields);
+ CheckTuple<Integer> checkTuple = new CheckTuple<>(fieldValues.length, numKeyFields);
for (int v : fieldValues) {
checkTuple.appendField(v);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/AbstractIndexTestWorker.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/AbstractIndexTestWorker.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/AbstractIndexTestWorker.java
index c1538f2..b6b19cf 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/AbstractIndexTestWorker.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/AbstractIndexTestWorker.java
@@ -27,7 +27,6 @@ import org.apache.hyracks.storage.am.common.TestOperationSelector.TestOperation;
import org.apache.hyracks.storage.am.common.api.IIndex;
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.IndexException;
import org.apache.hyracks.storage.am.common.datagen.DataGenThread;
import org.apache.hyracks.storage.am.common.datagen.TupleBatch;
@@ -39,8 +38,8 @@ public abstract class AbstractIndexTestWorker extends Thread implements ITreeInd
protected final IIndexAccessor indexAccessor;
- public AbstractIndexTestWorker(DataGenThread dataGen, TestOperationSelector opSelector, IIndex index, int numBatches)
- throws HyracksDataException {
+ public AbstractIndexTestWorker(DataGenThread dataGen, TestOperationSelector opSelector, IIndex index,
+ int numBatches) throws HyracksDataException {
this.dataGen = dataGen;
this.opSelector = opSelector;
this.numBatches = numBatches;
@@ -65,7 +64,7 @@ public abstract class AbstractIndexTestWorker extends Thread implements ITreeInd
}
}
- protected void consumeCursorTuples(IIndexCursor cursor) throws HyracksDataException, IndexException {
+ protected void consumeCursorTuples(IIndexCursor cursor) throws HyracksDataException {
try {
while (cursor.hasNext()) {
cursor.next();
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestWorker.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestWorker.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestWorker.java
index 144e9ea..ddbe73a 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestWorker.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestWorker.java
@@ -22,8 +22,8 @@ package org.apache.hyracks.storage.am.common;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
import org.apache.hyracks.storage.am.common.TestOperationSelector.TestOperation;
-import org.apache.hyracks.storage.am.common.api.IndexException;
+@FunctionalInterface
public interface ITreeIndexTestWorker {
- void performOp(ITupleReference tuple, TestOperation op) throws HyracksDataException, IndexException;
+ void performOp(ITupleReference tuple, TestOperation op) throws HyracksDataException;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexMultiThreadTestDriver.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexMultiThreadTestDriver.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexMultiThreadTestDriver.java
index 32dd15d..a765637 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexMultiThreadTestDriver.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexMultiThreadTestDriver.java
@@ -23,7 +23,6 @@ import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.common.TestOperationSelector.TestOperation;
import org.apache.hyracks.storage.am.common.api.IIndex;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
import org.apache.hyracks.storage.am.common.datagen.DataGenThread;
@SuppressWarnings("rawtypes")
@@ -49,8 +48,8 @@ public class IndexMultiThreadTestDriver {
index.activate();
}
- public long[] run(int numThreads, int numRepeats, int numOps, int batchSize) throws InterruptedException,
- TreeIndexException, HyracksDataException {
+ public long[] run(int numThreads, int numRepeats, int numOps, int batchSize)
+ throws InterruptedException, HyracksDataException {
int numBatches = (batchSize < 1 ? numOps : numOps / batchSize);
if (numBatches < numThreads) {
numThreads = numBatches;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
index 94c0ab4..b801715 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
@@ -32,6 +32,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.ErrorCode;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
@@ -41,8 +42,6 @@ import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
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.api.TreeIndexException;
@SuppressWarnings("rawtypes")
public abstract class TreeIndexTestUtils {
@@ -88,8 +87,8 @@ public abstract class TreeIndexTestUtils {
CheckTuple checkTuple = createCheckTuple(fieldSerdes.length, numKeys);
int fieldCount = Math.min(fieldSerdes.length, tuple.getFieldCount());
for (int i = 0; i < fieldCount; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
- tuple.getFieldLength(i));
+ ByteArrayInputStream inStream =
+ new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
DataInput dataIn = new DataInputStream(inStream);
Comparable fieldObj = (Comparable) fieldSerdes[i].deserialize(dataIn);
checkTuple.appendField(fieldObj);
@@ -122,8 +121,8 @@ public abstract class TreeIndexTestUtils {
while (diskOrderCursor.hasNext()) {
diskOrderCursor.next();
ITupleReference tuple = diskOrderCursor.getTuple();
- CheckTuple checkTuple = createCheckTupleFromTuple(tuple, ctx.getFieldSerdes(),
- ctx.getKeyFieldCount());
+ CheckTuple checkTuple =
+ createCheckTupleFromTuple(tuple, ctx.getFieldSerdes(), ctx.getKeyFieldCount());
if (!checkDiskOrderScanResult(tuple, checkTuple, ctx)) {
fail("Disk-order scan returned unexpected answer: " + checkTuple.toString());
}
@@ -140,9 +139,8 @@ public abstract class TreeIndexTestUtils {
} finally {
try {
diskOrderCursor.close();
- }
- catch(Exception ex){
- LOGGER.log(Level.WARNING,"Error during scan cursor close",ex);
+ } catch (Exception ex) {
+ LOGGER.log(Level.WARNING, "Error during scan cursor close", ex);
}
}
} catch (UnsupportedOperationException e) {
@@ -168,7 +166,7 @@ public abstract class TreeIndexTestUtils {
// Scale range of values according to number of keys.
// For example, for 2 keys we want the square root of numTuples, for 3
// keys the cube root of numTuples, etc.
- int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields));
+ int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / numKeyFields));
for (int i = 0; i < numTuples; i++) {
// Set keys.
setIntKeyFields(fieldValues, numKeyFields, maxValue, rnd);
@@ -183,9 +181,12 @@ public abstract class TreeIndexTestUtils {
try {
ctx.getIndexAccessor().insert(ctx.getTuple());
ctx.insertCheckTuple(createIntCheckTuple(fieldValues, ctx.getKeyFieldCount()), ctx.getCheckTuples());
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
// We set expected values only after insertion succeeds because
// we ignore duplicate keys.
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
}
@@ -198,7 +199,7 @@ public abstract class TreeIndexTestUtils {
// Scale range of values according to number of keys.
// For example, for 2 keys we want the square root of numTuples, for 3
// keys the cube root of numTuples, etc.
- int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields));
+ int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / numKeyFields));
for (int i = 0; i < numTuples; i++) {
// Set keys.
setIntKeyFields(fieldValues, numKeyFields, maxValue, rnd);
@@ -213,9 +214,12 @@ public abstract class TreeIndexTestUtils {
try {
ctx.getIndexAccessor().upsert(ctx.getTuple());
ctx.insertCheckTuple(createIntCheckTuple(fieldValues, ctx.getKeyFieldCount()), ctx.getCheckTuples());
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
// We set expected values only after insertion succeeds because
// we ignore duplicate keys.
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
}
@@ -225,7 +229,7 @@ public abstract class TreeIndexTestUtils {
int fieldCount = ctx.getFieldCount();
int numKeyFields = ctx.getKeyFieldCount();
int[] fieldValues = new int[ctx.getFieldCount()];
- int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields));
+ int maxValue = (int) Math.ceil(Math.pow(numTuples, 1.0 / numKeyFields));
Collection<CheckTuple> tmpCheckTuples = createCheckTuplesCollection();
for (int i = 0; i < numTuples; i++) {
// Set keys.
@@ -246,7 +250,7 @@ public abstract class TreeIndexTestUtils {
}
public static void bulkLoadCheckTuples(IIndexTestContext ctx, Collection<CheckTuple> checkTuples)
- throws HyracksDataException, IndexException {
+ throws HyracksDataException {
int fieldCount = ctx.getFieldCount();
int numTuples = checkTuples.size();
ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fieldCount);
@@ -257,7 +261,7 @@ public abstract class TreeIndexTestUtils {
for (CheckTuple checkTuple : checkTuples) {
if (LOGGER.isLoggable(Level.INFO)) {
//if (c % (numTuples / 10) == 0) {
- LOGGER.info("Bulk Loading Tuple " + c + "/" + numTuples);
+ LOGGER.info("Bulk Loading Tuple " + c + "/" + numTuples);
//}
}
createTupleFromCheckTuple(checkTuple, tupleBuilder, tuple, ctx.getFieldSerdes());
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
index ba55a1d..cc8445a 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
@@ -26,6 +26,7 @@ import java.util.logging.Logger;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
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.data.std.accessors.PointableBinaryComparatorFactory;
import org.apache.hyracks.data.std.primitive.DoublePointable;
@@ -45,7 +46,6 @@ import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory;
import org.apache.hyracks.storage.am.common.api.ITreeIndex;
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.TreeIndexException;
import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
import org.apache.hyracks.storage.am.common.impls.TreeIndexDiskOrderScanCursor;
import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
@@ -69,10 +69,9 @@ public abstract class AbstractRTreeExamplesTest {
protected abstract ITreeIndex createTreeIndex(ITypeTraits[] typeTraits,
IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories,
- IPrimitiveValueProviderFactory[] valueProviderFactories, RTreePolicyType rtreePolicyType,
- int[] rtreeFields, int[] btreeFields, ITypeTraits[] filterTypeTraits,
- IBinaryComparatorFactory[] filterCmpFactories, int[] filterFields) throws TreeIndexException,
- HyracksDataException;
+ IPrimitiveValueProviderFactory[] valueProviderFactories, RTreePolicyType rtreePolicyType, int[] rtreeFields,
+ int[] btreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories,
+ int[] filterFields) throws HyracksDataException;
/**
* Two Dimensions Example. Create an RTree index of two dimensions, where
@@ -96,10 +95,10 @@ public abstract class AbstractRTreeExamplesTest {
typeTraits[4] = IntegerPointable.TYPE_TRAITS;
typeTraits[5] = IntegerPointable.TYPE_TRAITS;
// Declare field serdes.
- ISerializerDeserializer[] fieldSerdes = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
+ ISerializerDeserializer[] fieldSerdes =
+ { IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+ IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+ IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
// Declare RTree keys.
int rtreeKeyFieldCount = 4;
@@ -136,11 +135,11 @@ public abstract class AbstractRTreeExamplesTest {
}
// create value providers
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- rtreeCmpFactories.length, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(rtreeCmpFactories.length, IntegerPointable.FACTORY);
- ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories,
- valueProviderFactories, RTreePolicyType.RTREE, null, btreeFields, null, null, null);
+ ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories, valueProviderFactories,
+ RTreePolicyType.RTREE, null, btreeFields, null, null, null);
treeIndex.create();
treeIndex.activate();
@@ -150,8 +149,8 @@ public abstract class AbstractRTreeExamplesTest {
}
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(NoOpOperationCallback.INSTANCE,
- NoOpOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
int numInserts = 10000;
for (int i = 0; i < numInserts; i++) {
int p1x = rnd.nextInt();
@@ -166,7 +165,10 @@ public abstract class AbstractRTreeExamplesTest {
Math.max(p1y, p2y), pk1, pk2);
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
long end = System.currentTimeMillis();
@@ -246,20 +248,20 @@ public abstract class AbstractRTreeExamplesTest {
}
// create value providers
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- rtreeCmpFactories.length, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(rtreeCmpFactories.length, IntegerPointable.FACTORY);
//2
- ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories,
- valueProviderFactories, RTreePolicyType.RTREE, null, btreeFields, null, null, null);
+ ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories, valueProviderFactories,
+ RTreePolicyType.RTREE, null, btreeFields, null, null, null);
treeIndex.create();
treeIndex.activate();
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
int p1x = rnd.nextInt();
int p1y = rnd.nextInt();
@@ -386,19 +388,19 @@ public abstract class AbstractRTreeExamplesTest {
}
// create value providers
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- rtreeCmpFactories.length, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(rtreeCmpFactories.length, IntegerPointable.FACTORY);
- ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories,
- valueProviderFactories, RTreePolicyType.RSTARTREE, null, btreeFields, null, null, null);
+ ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories, valueProviderFactories,
+ RTreePolicyType.RSTARTREE, null, btreeFields, null, null, null);
treeIndex.create();
treeIndex.activate();
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(TestOperationCallback.INSTANCE,
- TestOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(TestOperationCallback.INSTANCE, TestOperationCallback.INSTANCE);
int p1x = rnd.nextInt();
int p1y = rnd.nextInt();
@@ -535,12 +537,12 @@ public abstract class AbstractRTreeExamplesTest {
}
// create value providers
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- rtreeCmpFactories.length, DoublePointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(rtreeCmpFactories.length, DoublePointable.FACTORY);
//4
- ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories,
- valueProviderFactories, RTreePolicyType.RTREE, null, btreeFields, null, null, null);
+ ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories, valueProviderFactories,
+ RTreePolicyType.RTREE, null, btreeFields, null, null, null);
treeIndex.create();
treeIndex.activate();
@@ -550,8 +552,8 @@ public abstract class AbstractRTreeExamplesTest {
}
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(NoOpOperationCallback.INSTANCE,
- NoOpOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
int numInserts = 10000;
for (int i = 0; i < numInserts; i++) {
double p1x = rnd.nextDouble();
@@ -567,7 +569,10 @@ public abstract class AbstractRTreeExamplesTest {
Math.max(p1x, p2x), Math.max(p1y, p2y), Math.max(p1z, p2z), pk);
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
}
long end = System.currentTimeMillis();
@@ -643,18 +648,18 @@ public abstract class AbstractRTreeExamplesTest {
}
// create value providers
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- rtreeCmpFactories.length, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(rtreeCmpFactories.length, IntegerPointable.FACTORY);
- ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories,
- valueProviderFactories, RTreePolicyType.RTREE, null, btreeFields, null, null, null);
+ ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories, valueProviderFactories,
+ RTreePolicyType.RTREE, null, btreeFields, null, null, null);
treeIndex.create();
treeIndex.activate();
ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
ArrayTupleReference tuple = new ArrayTupleReference();
- IIndexAccessor indexAccessor = treeIndex.createAccessor(NoOpOperationCallback.INSTANCE,
- NoOpOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
int runs = 3;
for (int run = 0; run < runs; run++) {
@@ -689,7 +694,10 @@ public abstract class AbstractRTreeExamplesTest {
Math.max(p1y, p2y), pk);
try {
indexAccessor.insert(tuple);
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.DUPLICATE_KEY) {
+ throw e;
+ }
}
insDoneCmp[i] = insDone;
}
@@ -703,7 +711,10 @@ public abstract class AbstractRTreeExamplesTest {
try {
indexAccessor.delete(tuple);
delDone++;
- } catch (TreeIndexException e) {
+ } catch (HyracksDataException e) {
+ if (e.getErrorCode() != ErrorCode.UPDATE_OR_DELETE_NON_EXISTENT_KEY) {
+ throw e;
+ }
}
if (insDoneCmp[i] != delDone) {
if (LOGGER.isLoggable(Level.INFO)) {
@@ -779,12 +790,12 @@ public abstract class AbstractRTreeExamplesTest {
}
// create value providers
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- rtreeCmpFactories.length, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(rtreeCmpFactories.length, IntegerPointable.FACTORY);
//6
- ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories,
- valueProviderFactories, RTreePolicyType.RTREE, null, btreeFields, null, null, null);
+ ITreeIndex treeIndex = createTreeIndex(typeTraits, rtreeCmpFactories, btreeCmpFactories, valueProviderFactories,
+ RTreePolicyType.RTREE, null, btreeFields, null, null, null);
treeIndex.create();
treeIndex.activate();
@@ -817,8 +828,8 @@ public abstract class AbstractRTreeExamplesTest {
LOGGER.info(numInserts + " tuples loaded in " + (end - start) + "ms");
}
- IIndexAccessor indexAccessor = treeIndex.createAccessor(NoOpOperationCallback.INSTANCE,
- NoOpOperationCallback.INSTANCE);
+ IIndexAccessor indexAccessor =
+ treeIndex.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
// Build key.
ArrayTupleBuilder keyTb = new ArrayTupleBuilder(rtreeKeyFieldCount);
@@ -858,8 +869,8 @@ public abstract class AbstractRTreeExamplesTest {
LOGGER.info("Disk-Order Scan:");
}
ITreeIndexAccessor treeIndexAccessor = (ITreeIndexAccessor) indexAccessor;
- TreeIndexDiskOrderScanCursor diskOrderCursor = (TreeIndexDiskOrderScanCursor) treeIndexAccessor
- .createDiskOrderScanCursor();
+ TreeIndexDiskOrderScanCursor diskOrderCursor =
+ (TreeIndexDiskOrderScanCursor) treeIndexAccessor.createDiskOrderScanCursor();
treeIndexAccessor.diskOrderScan(diskOrderCursor);
try {
while (diskOrderCursor.hasNext()) {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/3b3319a9/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeMultiThreadTest.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeMultiThreadTest.java b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeMultiThreadTest.java
index d6f07d9..53245ac 100644
--- a/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeMultiThreadTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeMultiThreadTest.java
@@ -37,7 +37,6 @@ import org.apache.hyracks.storage.am.common.IndexMultiThreadTestDriver;
import org.apache.hyracks.storage.am.common.TestWorkloadConf;
import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory;
import org.apache.hyracks.storage.am.common.api.ITreeIndex;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
import org.apache.hyracks.storage.am.config.AccessMethodTestsConfig;
import org.apache.hyracks.storage.am.rtree.AbstractRTreeExamplesTest.RTreeType;
import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType;
@@ -72,7 +71,7 @@ public abstract class AbstractRTreeMultiThreadTest {
protected abstract ITreeIndex createTreeIndex(ITypeTraits[] typeTraits,
IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories,
IPrimitiveValueProviderFactory[] valueProviderFactories, RTreePolicyType rtreePolicyType, int[] btreeFields)
- throws TreeIndexException, HyracksDataException;
+ throws HyracksDataException;
protected abstract IIndexTestWorkerFactory getWorkerFactory();
@@ -82,8 +81,7 @@ public abstract class AbstractRTreeMultiThreadTest {
protected void runTest(ISerializerDeserializer[] fieldSerdes,
IPrimitiveValueProviderFactory[] valueProviderFactories, int numKeys, RTreePolicyType rtreePolicyType,
- int numThreads, TestWorkloadConf conf, String dataMsg) throws HyracksDataException, InterruptedException,
- TreeIndexException {
+ int numThreads, TestWorkloadConf conf, String dataMsg) throws HyracksDataException, InterruptedException {
setUp();
if (LOGGER.isLoggable(Level.INFO)) {
@@ -116,8 +114,8 @@ public abstract class AbstractRTreeMultiThreadTest {
// 4 batches per thread.
int batchSize = (NUM_OPERATIONS / numThreads) / 4;
- IndexMultiThreadTestDriver driver = new IndexMultiThreadTestDriver(index, workerFactory, fieldSerdes, conf.ops,
- conf.opProbs);
+ IndexMultiThreadTestDriver driver =
+ new IndexMultiThreadTestDriver(index, workerFactory, fieldSerdes, conf.ops, conf.opProbs);
driver.init();
long[] times = driver.run(numThreads, 1, NUM_OPERATIONS, batchSize);
driver.deinit();
@@ -130,14 +128,14 @@ public abstract class AbstractRTreeMultiThreadTest {
}
@Test
- public void rtreeTwoDimensionsInt() throws InterruptedException, HyracksDataException, TreeIndexException {
+ public void rtreeTwoDimensionsInt() throws InterruptedException, HyracksDataException {
ISerializerDeserializer[] fieldSerdes = { IntegerSerializerDeserializer.INSTANCE,
IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
int numKeys = 4;
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- numKeys, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(numKeys, IntegerPointable.FACTORY);
String dataMsg = "Two Dimensions Of Integer Values";
@@ -156,8 +154,8 @@ public abstract class AbstractRTreeMultiThreadTest {
DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE };
int numKeys = 4;
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- numKeys, DoublePointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(numKeys, DoublePointable.FACTORY);
String dataMsg = "Two Dimensions Of Double Values";
@@ -171,7 +169,7 @@ public abstract class AbstractRTreeMultiThreadTest {
}
@Test
- public void rtreeFourDimensionsDouble() throws InterruptedException, HyracksDataException, TreeIndexException {
+ public void rtreeFourDimensionsDouble() throws InterruptedException, HyracksDataException {
ISerializerDeserializer[] fieldSerdes = { DoubleSerializerDeserializer.INSTANCE,
DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
@@ -179,8 +177,8 @@ public abstract class AbstractRTreeMultiThreadTest {
DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE };
int numKeys = 8;
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- numKeys, DoublePointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(numKeys, DoublePointable.FACTORY);
String dataMsg = "Four Dimensions Of Double Values";
@@ -193,7 +191,7 @@ public abstract class AbstractRTreeMultiThreadTest {
}
@Test
- public void rstartreeTwoDimensionsInt() throws InterruptedException, HyracksDataException, TreeIndexException {
+ public void rstartreeTwoDimensionsInt() throws InterruptedException, HyracksDataException {
if (!testRstarPolicy) {
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info("Ignoring RTree Multithread Test With Two Dimensions With Integer Keys.");
@@ -206,8 +204,8 @@ public abstract class AbstractRTreeMultiThreadTest {
IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
int numKeys = 4;
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- numKeys, IntegerPointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(numKeys, IntegerPointable.FACTORY);
String dataMsg = "Two Dimensions Of Integer Values";
@@ -233,8 +231,8 @@ public abstract class AbstractRTreeMultiThreadTest {
DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE };
int numKeys = 4;
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- numKeys, DoublePointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(numKeys, DoublePointable.FACTORY);
String dataMsg = "Two Dimensions Of Double Values";
@@ -248,7 +246,7 @@ public abstract class AbstractRTreeMultiThreadTest {
}
@Test
- public void rstartreeFourDimensionsDouble() throws InterruptedException, HyracksDataException, TreeIndexException {
+ public void rstartreeFourDimensionsDouble() throws InterruptedException, HyracksDataException {
if (!testRstarPolicy) {
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info("Ignoring RTree Multithread Test With Four Dimensions With Double Keys.");
@@ -263,8 +261,8 @@ public abstract class AbstractRTreeMultiThreadTest {
DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE };
int numKeys = 8;
- IPrimitiveValueProviderFactory[] valueProviderFactories = RTreeUtils.createPrimitiveValueProviderFactories(
- numKeys, DoublePointable.FACTORY);
+ IPrimitiveValueProviderFactory[] valueProviderFactories =
+ RTreeUtils.createPrimitiveValueProviderFactories(numKeys, DoublePointable.FACTORY);
String dataMsg = "Four Dimensions Of Double Values";