datastore: Be less strict on the query range of children
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Wed, 8 Feb 2017 02:36:40 +0000 (21:36 -0500)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Mon, 13 Feb 2017 16:07:46 +0000 (11:07 -0500)
Just return an empty list when the time range does not intersect with the
node's range instead of throwing an exception.

Change-Id: I7f9aaa78cb410d26e713ea966efb74648d95b920
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/90602
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
statesystem/org.eclipse.tracecompass.datastore.core/src/org/eclipse/tracecompass/internal/provisional/datastore/core/historytree/overlapping/OverlappingNode.java

index 80ac3356d61e559eccacd280bd95c2a6e8f476c6..37c815a38861c87d3837c733fdc427b270787dff 100644 (file)
@@ -15,6 +15,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
@@ -23,7 +24,6 @@ import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.RangeCondition;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.exceptions.RangeException;
 import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
 import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode;
 import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
@@ -184,9 +184,9 @@ public class OverlappingNode<E extends IHTInterval> extends HTNode<E> {
         protected Collection<Integer> selectNextIndices(RangeCondition<Long> rc) {
             OverlappingNode<?> node = getNode();
 
-            if (rc.min() < node.getNodeStart()
-                    || (node.isOnDisk() && rc.max() > node.getNodeEnd())) {
-                throw new RangeException("Requesting children outside the node's range: " + rc.toString()); //$NON-NLS-1$
+            if (rc.max() < node.getNodeStart()
+                    || (node.isOnDisk() && rc.min() > node.getNodeEnd())) {
+                return Collections.emptySet();
             }
 
             node.takeReadLock();
This page took 0.025404 seconds and 5 git commands to generate.