You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2014/08/06 18:46:45 UTC

git commit: Fixes issue with incorrect page size hints causing cursor pagination to fail

Repository: incubator-usergrid
Updated Branches:
  refs/heads/pagebugfixes [created] 35c712740


Fixes issue with incorrect page size hints causing cursor pagination to fail


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/35c71274
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/35c71274
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/35c71274

Branch: refs/heads/pagebugfixes
Commit: 35c7127403a50b659648113aa171712093670683
Parents: d61fba9
Author: Todd Nine <to...@apache.org>
Authored: Wed Aug 6 10:45:06 2014 -0600
Committer: Todd Nine <to...@apache.org>
Committed: Wed Aug 6 10:45:06 2014 -0600

----------------------------------------------------------------------
 .../usergrid/persistence/cassandra/QueryProcessor.java    |  2 +-
 .../org/apache/usergrid/persistence/query/ir/AllNode.java |  6 ++++++
 .../apache/usergrid/persistence/query/ir/BooleanNode.java | 10 ++++++++++
 .../persistence/query/ir/EmailIdentifierNode.java         |  6 ++++++
 .../usergrid/persistence/query/ir/NameIdentifierNode.java |  6 ++++++
 .../org/apache/usergrid/persistence/query/ir/NotNode.java |  6 ++++++
 .../apache/usergrid/persistence/query/ir/OrderByNode.java |  6 ++++++
 .../apache/usergrid/persistence/query/ir/QueryNode.java   |  6 ++++++
 .../apache/usergrid/persistence/query/ir/SliceNode.java   |  6 ++++++
 .../usergrid/persistence/query/ir/UuidIdentifierNode.java |  6 ++++++
 .../apache/usergrid/persistence/query/ir/WithinNode.java  |  6 ++++++
 11 files changed, 65 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
index 9ccf240..c2b65b7 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
@@ -633,7 +633,7 @@ public class QueryProcessor {
 
         //if it's a root node, and there's only 1 slice to check in the entire tree, then just select what we need
         //so we short circuit on range scans faster.  otherwise it's more efficient to make less trips with candidates we discard from cassandra
-        if ( node == rootNode && sliceCount == 1 ) {
+        if ( node == rootNode && !node.ignoreHintSize()) {
             return size;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/AllNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/AllNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/AllNode.java
index d870e49..11c39c9 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/AllNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/AllNode.java
@@ -58,6 +58,12 @@ public class AllNode extends QueryNode {
 
 
     @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
+    @Override
     public String toString() {
         return "AllNode";
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/BooleanNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/BooleanNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/BooleanNode.java
index ac3e42d..ee47946 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/BooleanNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/BooleanNode.java
@@ -49,7 +49,17 @@ public abstract class BooleanNode extends QueryNode {
 
 
     @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
+    @Override
     public String toString() {
         return "BooleanNode [left=" + left + ", right=" + right + "]";
     }
+
+
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/EmailIdentifierNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/EmailIdentifierNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/EmailIdentifierNode.java
index 92dffee..1dc6d13 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/EmailIdentifierNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/EmailIdentifierNode.java
@@ -47,6 +47,12 @@ public class EmailIdentifierNode extends QueryNode {
     }
 
 
+    @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
     public Identifier getIdentifier() {
         return identifier;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NameIdentifierNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NameIdentifierNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NameIdentifierNode.java
index 2bd1b05..75ba111 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NameIdentifierNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NameIdentifierNode.java
@@ -44,6 +44,12 @@ public class NameIdentifierNode extends QueryNode {
     }
 
 
+    @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
     public String getName() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NotNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NotNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NotNode.java
index 06b8208..306eff3 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NotNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/NotNode.java
@@ -63,6 +63,12 @@ public class NotNode extends QueryNode {
 
 
     @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
+    @Override
     public String toString() {
         return "NotNode [child=" + subtractNode + "]";
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/OrderByNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/OrderByNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/OrderByNode.java
index ae3eb9e..df80aa7 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/OrderByNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/OrderByNode.java
@@ -89,6 +89,12 @@ public class OrderByNode extends QueryNode {
     }
 
 
+    @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
     /* (non-Javadoc)
          * @see java.lang.Object#toString()
          */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/QueryNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/QueryNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/QueryNode.java
index 5d3f0aa..954c13f 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/QueryNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/QueryNode.java
@@ -32,4 +32,10 @@ public abstract class QueryNode {
      * Get the count of the total number of slices in our tree from this node and it's children
      */
     public abstract int getCount();
+
+    /**
+     * True if this node should not be used in it's context in the AST, and should ignore it's hint size and always select the max
+     * @return
+     */
+    public abstract boolean ignoreHintSize();
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SliceNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SliceNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SliceNode.java
index 046b517..fc6f53b 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SliceNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SliceNode.java
@@ -65,6 +65,12 @@ public class SliceNode extends QueryNode {
     }
 
 
+    @Override
+    public boolean ignoreHintSize() {
+        return pairs.size() > 1;
+    }
+
+
     /**
      * Set the start value. If the range pair doesn't exist, it's created
      *

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/UuidIdentifierNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/UuidIdentifierNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/UuidIdentifierNode.java
index 42e2c08..79a6217 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/UuidIdentifierNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/UuidIdentifierNode.java
@@ -48,6 +48,12 @@ public class UuidIdentifierNode extends QueryNode {
     }
 
 
+    @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
     public UUID getUuid() {
         return uuid;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/35c71274/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/WithinNode.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/WithinNode.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/WithinNode.java
index 6551aee..35afda6 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/WithinNode.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/WithinNode.java
@@ -96,6 +96,12 @@ public class WithinNode extends QueryNode {
 
 
     @Override
+    public boolean ignoreHintSize() {
+        return false;
+    }
+
+
+    @Override
     public String toString() {
         return "WithinNode [propertyName=" + propertyName + ", distance=" + distance + ", lattitude=" + lattitude
                 + ", longitude=" + longitude + "]";