Wido den Hollander created CLOUDSTACK-974: ---------------------------------------------
Summary: listServiceOfferings doesn't sort by sortKey if page and/or pagesize isn't set Key: CLOUDSTACK-974 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-974 Project: CloudStack Issue Type: Bug Security Level: Public (Anyone can view this level - this is the default.) Components: API Affects Versions: 4.0.0, 4.0.1 Reporter: Wido den Hollander Priority: Minor Fix For: 4.0.1 I was just notified by a colleague that there is different behaviour between the Admin UI and User UI. When you list all Service Offerings in the Admin interface they get sorted by sortKey descending. If you go and create an Instance as a user through the wizard the Service Offerings aren't sorted, they are in the order like they are in the database. I logged the MySQL queries and they are: ** ADMIN ** SELECT disk_offering.id, disk_offering.domain_id, disk_offering.unique_name, disk_offering.name, disk_offering.display_text, disk_offering.disk_size, disk_offering.tags, disk_offering.type, disk_offering.removed, disk_offering.created, disk_offering.recreatable, disk_offering.use_local_storage, disk_offering.system_use, disk_offering.customized, disk_offering.uuid, disk_offering.sort_key, service_offering.cpu, service_offering.speed, service_offering.ram_size, service_offering.nw_rate, service_offering.mc_rate, service_offering.ha_enabled, service_offering.limit_cpu_use, service_offering.host_tag, service_offering.default_use, service_offering.vm_type, service_offering.sort_key FROM service_offering INNER JOIN disk_offering ON service_offering.id=disk_offering.id WHERE disk_offering.type='Service' AND disk_offering.system_use = 0 AND disk_offering.system_use = 0 AND disk_offering.removed IS NULL ORDER BY service_offering.sort_key DESC ** USER ** SELECT disk_offering.id, disk_offering.domain_id, disk_offering.unique_name, disk_offering.name, disk_offering.display_text, disk_offering.disk_size, disk_offering.tags, disk_offering.type, disk_offering.removed, disk_offering.created, disk_offering.recreatable, disk_offering.use_local_storage, disk_offering.system_use, disk_offering.customized, disk_offering.uuid, disk_offering.sort_key, service_offering.cpu, service_offering.speed, service_offering.ram_size, service_offering.nw_rate, service_offering.mc_rate, service_offering.ha_enabled, service_offering.limit_cpu_use, service_offering.host_tag, service_offering.default_use, service_offering.vm_type, service_offering.sort_key FROM service_offering INNER JOIN disk_offering ON service_offering.id=disk_offering.id WHERE disk_offering.type='Service' AND disk_offering.domain_id IS NULL AND disk_offering.system_use = 0 AND disk_offering.removed IS NULL To me it seems this goes wrong in ManagementServerImpl.searchForServiceOfferings: Filter searchFilter = new Filter(ServiceOfferingVO.class, "sortKey", isAscending, cmd.getStartIndex(), cmd.getPageSizeVal()); getStartIndex and getPageSizeVal are both NULL since the user UI doesn't add page nor pagesize to the API request. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira