From c90723f491c8da4cb9873a896a2410f60b358193 Mon Sep 17 00:00:00 2001 From: ramamurtis Date: Fri, 30 Oct 2015 09:44:59 +0530 Subject: [PATCH] CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrently --- 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(-) diff --git a/framework/db/src/com/cloud/utils/db/Filter.java b/framework/db/src/com/cloud/utils/db/Filter.java index fdcad9c3e54..59dc8c1477e 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(); } } diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index e90f2137f81..f853b673d4a 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 sb = _templateJoinDao.createSearchBuilder(); sb.select(null, Func.DISTINCT, sb.entity().getTempZonePair()); // select distinct (templateId, zoneId) pair diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index 15cefa54616..4bb2c95f4b5 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 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 uvList = new ArrayList(); // query details by batches int curr_index = 0;