Skip to content

Commit c90723f

Browse files
author
ramamurtis
committed
CLOUDSTACK-9006 - ListTemplates API returns result in inconsistent order when called concurrently
1 parent 1f6781b commit c90723f

3 files changed

Lines changed: 3 additions & 1 deletion

File tree

framework/db/src/com/cloud/utils/db/Filter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void addOrderBy(Class<?> clazz, String field, boolean ascending) {
8989
if (_orderBy == null) {
9090
_orderBy = order.insert(0, " ORDER BY ").toString();
9191
} else {
92-
_orderBy = order.insert(0, _orderBy).toString();
92+
_orderBy = order.insert(0, _orderBy + ", ").toString();
9393
}
9494
}
9595

server/src/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3106,6 +3106,7 @@ private Pair<List<TemplateJoinVO>, Integer> searchForTemplatesInternal(Long temp
31063106
Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm"));
31073107
isAscending = (isAscending == null ? Boolean.TRUE : isAscending);
31083108
Filter searchFilter = new Filter(TemplateJoinVO.class, "sortKey", isAscending, startIndex, pageSize);
3109+
searchFilter.addOrderBy(TemplateJoinVO.class, "tempZonePair", isAscending);
31093110

31103111
SearchBuilder<TemplateJoinVO> sb = _templateJoinDao.createSearchBuilder();
31113112
sb.select(null, Func.DISTINCT, sb.entity().getTempZonePair()); // select distinct (templateId, zoneId) pair

server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ public List<TemplateJoinVO> searchByTemplateZonePair(Boolean showRemoved, String
383383
Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm"));
384384
isAscending = (isAscending == null ? Boolean.TRUE : isAscending);
385385
Filter searchFilter = new Filter(TemplateJoinVO.class, "sortKey", isAscending, null, null);
386+
searchFilter.addOrderBy(TemplateJoinVO.class, "tempZonePair", isAscending);
386387
List<TemplateJoinVO> uvList = new ArrayList<TemplateJoinVO>();
387388
// query details by batches
388389
int curr_index = 0;

0 commit comments

Comments
 (0)