You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by re...@apache.org on 2015/11/04 11:48:51 UTC

[1/3] git commit: updated refs/heads/master to 5f61041

Repository: cloudstack
Updated Branches:
  refs/heads/master 2fd6fac21 -> 5f6104155


CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrently


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c90723f4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c90723f4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c90723f4

Branch: refs/heads/master
Commit: c90723f491c8da4cb9873a896a2410f60b358193
Parents: 1f6781b
Author: ramamurtis <ra...@citrix.com>
Authored: Fri Oct 30 09:44:59 2015 +0530
Committer: ramamurtis <ra...@citrix.com>
Committed: Fri Oct 30 09:44:59 2015 +0530

----------------------------------------------------------------------
 framework/db/src/com/cloud/utils/db/Filter.java             | 2 +-
 server/src/com/cloud/api/query/QueryManagerImpl.java        | 1 +
 server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c90723f4/framework/db/src/com/cloud/utils/db/Filter.java
----------------------------------------------------------------------
diff --git a/framework/db/src/com/cloud/utils/db/Filter.java b/framework/db/src/com/cloud/utils/db/Filter.java
index fdcad9c..59dc8c1 100644
--- a/framework/db/src/com/cloud/utils/db/Filter.java
+++ b/framework/db/src/com/cloud/utils/db/Filter.java
@@ -89,7 +89,7 @@ public class Filter {
         if (_orderBy == null) {
             _orderBy = order.insert(0, " ORDER BY ").toString();
         } else {
-            _orderBy = order.insert(0, _orderBy).toString();
+            _orderBy = order.insert(0, _orderBy + ", ").toString();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c90723f4/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java
index e90f213..f853b67 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -3106,6 +3106,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService, Confi
         Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm"));
         isAscending = (isAscending == null ? Boolean.TRUE : isAscending);
         Filter searchFilter = new Filter(TemplateJoinVO.class, "sortKey", isAscending, startIndex, pageSize);
+        searchFilter.addOrderBy(TemplateJoinVO.class, "tempZonePair", isAscending);
 
         SearchBuilder<TemplateJoinVO> sb = _templateJoinDao.createSearchBuilder();
         sb.select(null, Func.DISTINCT, sb.entity().getTempZonePair()); // select distinct (templateId, zoneId) pair

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c90723f4/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
index 15cefa5..4bb2c95 100644
--- a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
@@ -383,6 +383,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBase<TemplateJoinVO, Long> im
         Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm"));
         isAscending = (isAscending == null ? Boolean.TRUE : isAscending);
         Filter searchFilter = new Filter(TemplateJoinVO.class, "sortKey", isAscending, null, null);
+        searchFilter.addOrderBy(TemplateJoinVO.class, "tempZonePair", isAscending);
         List<TemplateJoinVO> uvList = new ArrayList<TemplateJoinVO>();
         // query details by batches
         int curr_index = 0;


[2/3] git commit: updated refs/heads/master to 5f61041

Posted by re...@apache.org.
CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrently

Adding filter test to verify addOrderBy method.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9d1a469a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9d1a469a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9d1a469a

Branch: refs/heads/master
Commit: 9d1a469ae5f0a3751b64d66582fbcc2180a9c97c
Parents: c90723f
Author: ramamurtis <ra...@citrix.com>
Authored: Wed Nov 4 10:31:02 2015 +0530
Committer: ramamurtis <ra...@citrix.com>
Committed: Wed Nov 4 10:31:02 2015 +0530

----------------------------------------------------------------------
 .../db/test/com/cloud/utils/db/FilterTest.java  | 44 ++++++++++++++++++++
 1 file changed, 44 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d1a469a/framework/db/test/com/cloud/utils/db/FilterTest.java
----------------------------------------------------------------------
diff --git a/framework/db/test/com/cloud/utils/db/FilterTest.java b/framework/db/test/com/cloud/utils/db/FilterTest.java
new file mode 100644
index 0000000..079611a
--- /dev/null
+++ b/framework/db/test/com/cloud/utils/db/FilterTest.java
@@ -0,0 +1,44 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.utils.db;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FilterTest {
+
+    @Test
+    /*
+    *  This test verifies that the Order By clause generated by the filter is correct and it separates each
+    *  order by field with a comma. Using DbTestVO to assert it
+    */
+    public void testAddOrderBy() {
+        Filter filter = new Filter(DbTestVO.class, "fieldString", true, 1L, 1L);
+
+        Assert.assertTrue(filter.getOrderBy().trim().toLowerCase().equals("order by test.fld_string asc"));
+
+        filter.addOrderBy(DbTestVO.class, "fieldLong", true);
+
+        Assert.assertTrue(filter.getOrderBy().contains(","));
+        Assert.assertTrue(filter.getOrderBy().split(",")[1].trim().toLowerCase().equals("test.fld_long asc"));
+
+        filter.addOrderBy(DbTestVO.class, "fieldInt", true);
+
+        Assert.assertTrue(filter.getOrderBy().split(",").length == 3);
+        Assert.assertTrue(filter.getOrderBy().split(",")[2].trim().toLowerCase().equals("test.fld_int asc"));
+    }
+}


[3/3] git commit: updated refs/heads/master to 5f61041

Posted by re...@apache.org.
Merge pull request #1009 from rags22489664/master

CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrentlyThe order of templates returned in the response is based on a field called sortkey and by default value for the field is set to 0.

With more than 1000 templates, we tried listing the templates with different page sizes concurrently, and we noticed the results being inconsistent.

Thus we added a secondary order by clause to list templates call on tempZonePair column to make sure the results are consistent.

The addOrderby method of Filter class was also not appending , if we added more orderby clauses.

* pr/1009:
  CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrently
  CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrently

Signed-off-by: Remi Bergsma <gi...@remi.nl>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5f610415
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5f610415
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5f610415

Branch: refs/heads/master
Commit: 5f610415504b9f18f91169761598a1585ce429c7
Parents: 2fd6fac 9d1a469
Author: Remi Bergsma <gi...@remi.nl>
Authored: Wed Nov 4 11:48:07 2015 +0100
Committer: Remi Bergsma <gi...@remi.nl>
Committed: Wed Nov 4 11:48:08 2015 +0100

----------------------------------------------------------------------
 framework/db/src/com/cloud/utils/db/Filter.java |  2 +-
 .../db/test/com/cloud/utils/db/FilterTest.java  | 44 ++++++++++++++++++++
 .../com/cloud/api/query/QueryManagerImpl.java   |  1 +
 .../api/query/dao/TemplateJoinDaoImpl.java      |  1 +
 4 files changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------