Shubhendu Tripathi has uploaded a new change for review. Change subject: gluster: Correct swift status display for UNKNOWN ......................................................................
gluster: Correct swift status display for UNKNOWN If a host goes to non-responsive state because of vdsm down the status of swift services was not shown properly. Corrected the same to show the status of swift as unknown if the host is non-responsive. Change-Id: Ic1659425e94b562916162dcddc09a19ed60b2ccf Bug-Url: https://bugzilla.redhat.com/975326 Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterServiceSyncJob.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/ClusterUtils.java 2 files changed, 45 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/15904/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterServiceSyncJob.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterServiceSyncJob.java index 99beab2..4cdadd1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterServiceSyncJob.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterServiceSyncJob.java @@ -11,6 +11,7 @@ import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.gluster.GlusterClusterService; import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerService; import org.ovirt.engine.core.common.businessentities.gluster.GlusterService; @@ -53,14 +54,21 @@ if (supportsGlusterServicesFeature(cluster)) { try { List<VDS> upServers = getClusterUtils().getAllUpServers(cluster.getId()); - if (upServers == null || upServers.isEmpty()) { - log.debugFormat("No UP servers found in cluster {0}, not refreshing status of services.", - cluster.getname()); - continue; + List<VDS> servers = getClusterUtils().getAllServers(cluster.getId()); + + // Update the service status on servers which are not UP + List<Callable<Map<String, GlusterServiceStatus>>> taskListForNonRunningServers = + createTaskListForNonRunningServers(servers); + if (taskListForNonRunningServers != null && taskListForNonRunningServers.size() > 0) { + ThreadPoolUtil.invokeAll(taskListForNonRunningServers); } + // Update the service status on servers which are UP log.debugFormat("Syncing gluster related services for cluster {0}", cluster.getname()); - refreshClusterServices(cluster, ThreadPoolUtil.invokeAll(createTaskList(upServers))); + List<Callable<Map<String, GlusterServiceStatus>>> taskList = createTaskList(upServers); + if (taskList != null && taskList.size() > 0) { + refreshClusterServices(cluster, ThreadPoolUtil.invokeAll(createTaskList(upServers))); + } } catch (Exception e) { log.errorFormat("Error while refreshing service statuses of cluster {0}!", cluster.getname(), @@ -70,6 +78,34 @@ } } + private List<Callable<Map<String, GlusterServiceStatus>>> createTaskListForNonRunningServers(List<VDS> servers) { + List<Callable<Map<String, GlusterServiceStatus>>> taskList = + new ArrayList<Callable<Map<String, GlusterServiceStatus>>>(); + for (final VDS server : servers) { + if (server.getStatus() != VDSStatus.Up) { + taskList.add(new Callable<Map<String, GlusterServiceStatus>>() { + @Override + public Map<String, GlusterServiceStatus> call() throws Exception { + return updateGlusterServicesStatus(server); + } + }); + } + } + return taskList; + } + + private Map<String, GlusterServiceStatus> updateGlusterServicesStatus(VDS server) { + Map<String, GlusterServiceStatus> retMap = new HashMap<String, GlusterServiceStatus>(); + List<GlusterServerService> serviceList = + getGlusterServerServiceDao().getByServerIdAndServiceType(server.getId(), ServiceType.GLUSTER_SWIFT); + for (GlusterServerService service : serviceList) { + retMap.put(service.getServiceName(), GlusterServiceStatus.UNKNOWN); + service.setStatus(GlusterServiceStatus.UNKNOWN); + getGlusterServerServiceDao().update(service); + } + return retMap; + } + private List<Callable<Map<String, GlusterServiceStatus>>> createTaskList(List<VDS> upServers) { List<Callable<Map<String, GlusterServiceStatus>>> taskList = new ArrayList<Callable<Map<String, GlusterServiceStatus>>>(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/ClusterUtils.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/ClusterUtils.java index c36b70f..b810d9a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/ClusterUtils.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/ClusterUtils.java @@ -40,6 +40,10 @@ return getVdsDao().getAllForVdsGroupWithStatus(clusterId, VDSStatus.Up); } + public List<VDS> getAllServers(Guid clusterId) { + return getVdsDao().getAllForVdsGroup(clusterId); + } + public boolean hasMultipleServers(Guid clusterId) { return getServerCount(clusterId) > 1; } -- To view, visit http://gerrit.ovirt.org/15904 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic1659425e94b562916162dcddc09a19ed60b2ccf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches