Gilad Chaplik has uploaded a new change for review. Change subject: core: fix numa node distance persist ......................................................................
core: fix numa node distance persist Persist node distance according to numa index (and not count). Change-Id: Ia3df943ef0a655b1250ebeade8caa7711b612440 Bug-Url: https://bugzilla.redhat.com/1069303 Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java 2 files changed, 25 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/33190/1 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java index bd999ff..1ad96ee 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsNumaNodeDAODbFacadeImpl.java @@ -6,6 +6,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.NumaNodeStatistics; @@ -195,14 +196,16 @@ } }; + // format: (<index_id>, <distance>);*, for example: "0, 10; 2, 16" private static Map<Integer, Integer> getDistanceMap(String distance) { Map<Integer, Integer> nodeDistance = new HashMap<>(); if (StringUtils.isBlank(distance)) { return nodeDistance; } - String[] distanceArray = distance.split(","); + String[] distanceArray = distance.split(";"); for (int i = 0; i < distanceArray.length; i++) { - nodeDistance.put(i, Integer.valueOf(distanceArray[i])); + String[] nodeDistanceArray = distanceArray[i].split(","); + nodeDistance.put(Integer.valueOf(nodeDistanceArray[0]), Integer.valueOf(nodeDistanceArray[1])); } return nodeDistance; } @@ -212,9 +215,11 @@ return null; } StringBuilder sb = new StringBuilder(); - for (int i = 0; i < distance.size(); i++) { - sb.append(distance.get(i)); + for (Entry<Integer, Integer> entry : distance.entrySet()) { + sb.append(entry.getKey()); sb.append(","); + sb.append(entry.getValue()); + sb.append(";"); } return sb.deleteCharAt(sb.length() - 1).toString(); } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java index 679c397..862f765 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java @@ -9,6 +9,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -80,6 +81,15 @@ public class VdsBrokerObjectsBuilder { private final static int VNC_START_PORT = 5900; private final static double NANO_SECONDS = 1000000000; + + private static final Comparator<VdsNumaNode> numaNodeComparator = new Comparator<VdsNumaNode>() { + + @Override + public int compare(VdsNumaNode arg0, VdsNumaNode arg1) { + return arg0.getIndex() < arg1.getIndex() ? -1 : 1; + } + + }; public static VmDynamic buildVMDynamicDataFromList(Map<String, Object> xmlRpcStruct) { VmDynamic vmdynamic = new VmDynamic(); @@ -1657,12 +1667,14 @@ newNumaNodeList.add(numaNode); } - for (Map.Entry<String, Object> item : numaNodeDistanceMap.entrySet()) { - int index = Integer.valueOf(item.getKey()); - List<Integer> distances = extractIntegerList(numaNodeDistanceMap, item.getKey()); + Collections.sort(newNumaNodeList, numaNodeComparator); + + for (VdsNumaNode vdsNumaNode : newNumaNodeList) { + int index = vdsNumaNode.getIndex(); + List<Integer> distances = extractIntegerList(numaNodeDistanceMap, String.valueOf(index)); Map<Integer, Integer> distanceMap = new HashMap<>(distances.size()); for (int i = 0; i < distances.size(); i++) { - distanceMap.put(i, distances.get(i)); + distanceMap.put(newNumaNodeList.get(i).getIndex(), distances.get(i)); } VdsNumaNode newNumaNode = NumaUtils.getVdsNumaNodeByIndex(newNumaNodeList, index); if (newNumaNode != null) { -- To view, visit http://gerrit.ovirt.org/33190 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia3df943ef0a655b1250ebeade8caa7711b612440 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches