You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2015/12/10 21:12:42 UTC

svn commit: r1719194 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws: ./ server/

Author: degenaro
Date: Thu Dec 10 20:12:41 2015
New Revision: 1719194

URL: http://svn.apache.org/viewvc?rev=1719194&view=rev
Log:
UIMA-4704 DUCC Web Server (WS) Machines page enhancements when using DB

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesDataHelper.java
      - copied, changed from r1718861, uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/Helper.java
Removed:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/Helper.java
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java?rev=1719194&r1=1719193&r2=1719194&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java Thu Dec 10 20:12:41 2015
@@ -22,6 +22,7 @@ import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.TreeMap;
 import java.util.concurrent.ConcurrentSkipListMap;
@@ -39,6 +40,8 @@ import org.apache.uima.ducc.common.utils
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.event.NodeMetricsUpdateDuccEvent;
 import org.apache.uima.ducc.transport.event.ProcessInfo;
+import org.apache.uima.ducc.ws.db.DbQuery;
+import org.apache.uima.ducc.ws.db.IDbMachine;
 import org.apache.uima.ducc.ws.types.Ip;
 import org.apache.uima.ducc.ws.types.NodeId;
 import org.apache.uima.ducc.ws.types.UserId;
@@ -366,7 +369,22 @@ public class DuccMachinesData {
 		return retVal;
 	}
 	
+	public void enhance(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		if(facts != null) {
+			if(dbMachineMap != null) {
+				String[] machineStatus = DuccMachinesDataHelper.getMachineStatus(facts, dbMachineMap);
+				facts.status = machineStatus[0];
+				facts.statusReason = machineStatus[1];
+				String reserveSize = DuccMachinesDataHelper.getMachineReserveSize(facts, dbMachineMap);
+				facts.memReserve = reserveSize;
+				String quantum = DuccMachinesDataHelper.getMachineQuantum(facts, dbMachineMap);
+				facts.quantum = quantum;
+			}
+		}
+	}
+	
 	public MachineFactsList getMachineFactsList() {
+		Map<String, IDbMachine> dbMachineMap = DbQuery.getInstance().getMapMachines();
 		MachineFactsList factsList = new MachineFactsList();
 		ConcurrentSkipListMap<MachineInfo,String> sortedMachines = getSortedMachines();
 		Iterator<MachineInfo> iterator;
@@ -385,6 +403,7 @@ public class DuccMachinesData {
 			List<String> aliens = machineInfo.getAliens();
 			String heartbeat = ""+machineInfo.getElapsed();
 			MachineFacts facts = new MachineFacts(status,ip,name,memTotal,memFree,swapInuse,swapDelta,swapFree,cGroups,aliens,heartbeat);
+			enhance(facts,dbMachineMap);
 			factsList.add(facts);
 		}
 		return factsList;

Copied: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesDataHelper.java (from r1718861, uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/Helper.java)
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesDataHelper.java?p2=uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesDataHelper.java&p1=uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/Helper.java&r1=1718861&r2=1719194&rev=1719194&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/Helper.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesDataHelper.java Thu Dec 10 20:12:41 2015
@@ -1,18 +1,40 @@
-package org.apache.uima.ducc.ws.server;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws;
 
 import java.util.Map;
 
 import org.apache.uima.ducc.cli.ws.json.MachineFacts;
-import org.apache.uima.ducc.cli.ws.json.MachineFactsList;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
+import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.ws.db.IDbMachine;
 
-public class Helper {
-	
-	// up: responsive == true && online == true && blacklisted == false
+public class DuccMachinesDataHelper {
+
+	private static DuccLogger logger = DuccLoggerComponents.getWsLogger(DuccMachinesDataHelper.class.getName());
+	private static DuccId jobid = null;
 	
 	public enum MachineStatus { up, down, unknown };
 	
 	private static String[] getMachineStatusWs(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		String location = "getMachineStatusWs";
 		String[] retVal = null;
 		if(facts != null) {
 			if(facts.status != null) {
@@ -20,18 +42,23 @@ public class Helper {
 					retVal = new String[2];
 					retVal[0] = facts.status;
 					retVal[1] = "";
+					logger.debug(location, jobid, retVal[0]+" "+retVal[1]);
 				}
 				else if(facts.status.equals("down")) {
 					retVal = new String[2];
 					retVal[0] = facts.status;
 					retVal[1] = "heartbeat=missing";
+					logger.debug(location, jobid, retVal[0]+" "+retVal[1]);
 				}
 			}
 		}
 		return retVal;
 	}
 	
+	// up: responsive == true && online == true && blacklisted == false
+	
 	private static String[] getMachineStatusDb(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		String location = "getMachineStatusDb";
 		String[] retVal = null;
 		if(facts != null) {
 			if(facts.status != null) {
@@ -57,6 +84,7 @@ public class Helper {
 								}
 							}
 						}
+						logger.debug(location, jobid, sb);
 					}
 				}
 			}
@@ -80,14 +108,60 @@ public class Helper {
 		return retVal;
 	}
 	
-	public static void updateMachineStatus(MachineFactsList factsList, Map<String, IDbMachine> dbMachineMap) {
-		if(factsList!= null) {
-			if(dbMachineMap != null) {
-				for(MachineFacts facts : factsList) {
-					String[] machineStatus = getMachineStatus(facts, dbMachineMap);
-					facts.status = machineStatus[0];
-				}
+	private static String getMachineReserveSizeWs(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		String location = "getMachineReserveSizeWs";
+		String retVal = null;
+		if(facts != null) {
+			if(!facts.status.equals("defined")) {
+				retVal = facts.memFree;
+				logger.debug(location, jobid, retVal);
+			}
+		}
+		return retVal;
+	}
+	
+	// reserve size: quantum * shareOrder
+	
+	private static String getMachineReserveSizeDb(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		String location = "getMachineReserveSizeDb";
+		String retVal = null;
+		if(dbMachineMap != null) {
+			IDbMachine dbMachine = dbMachineMap.get(facts.name);
+			if(dbMachine != null) {
+				retVal = ""+dbMachine.getQuantum()*dbMachine.getShareOrder();
+				logger.debug(location, jobid, retVal);
+			}
+		}
+		return retVal;
+	}
+	
+	public static String getMachineReserveSize(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		String retVal = null;
+		if(retVal == null) {
+			retVal = getMachineReserveSizeDb(facts, dbMachineMap);
+		}
+		if(retVal == null) {
+			retVal = getMachineReserveSizeWs(facts, dbMachineMap);
+		}
+		if(retVal == null) {
+			retVal = "0";
+		}
+		return retVal;
+	}
+	
+	// quantum
+	
+	public static String getMachineQuantum(MachineFacts facts, Map<String, IDbMachine> dbMachineMap) {
+		String location = "getMachineQuantum";
+		String retVal = "";
+		if(dbMachineMap != null) {
+			IDbMachine dbMachine = dbMachineMap.get(facts.name);
+			if(dbMachine != null) {
+				retVal = ""+dbMachine.getQuantum();
+				logger.debug(location, jobid, retVal);
 			}
 		}
+		return retVal;
 	}
+	
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1719194&r1=1719193&r2=1719194&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Thu Dec 10 20:12:41 2015
@@ -1821,10 +1821,10 @@ public class DuccHandler extends DuccAbs
 		DuccWorkJob job = getJob(jobNo);
 		if(job != null) {
 			try {
-				String directory = job.getLogDirectory()+jobNo;
+				//String directory = job.getLogDirectory()+jobNo;
 				EffectiveUser eu = EffectiveUser.create(request);
-				long wiVersion = job.getWiVersion();
-				AlienWorkItemStateReader workItemStateReader = new AlienWorkItemStateReader(eu, component, directory,  wiVersion);
+				//long wiVersion = job.getWiVersion();
+				//AlienWorkItemStateReader workItemStateReader = new AlienWorkItemStateReader(eu, component, directory,  wiVersion);
 				PerformanceSummary performanceSummary = new PerformanceSummary(job.getLogDirectory()+jobNo);
 			    PerformanceMetricsSummaryMap performanceMetricsSummaryMap = performanceSummary.readSummary(eu.get());
 			    if( (performanceMetricsSummaryMap == null) || (performanceMetricsSummaryMap.size() == 0) ) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1719194&r1=1719193&r2=1719194&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java Thu Dec 10 20:12:41 2015
@@ -72,8 +72,6 @@ import org.apache.uima.ducc.ws.DuccMachi
 import org.apache.uima.ducc.ws.Info;
 import org.apache.uima.ducc.ws.JobInfo;
 import org.apache.uima.ducc.ws.MachineInfo;
-import org.apache.uima.ducc.ws.db.DbQuery;
-import org.apache.uima.ducc.ws.db.IDbMachine;
 import org.apache.uima.ducc.ws.helper.BrokerHelper;
 import org.apache.uima.ducc.ws.helper.BrokerHelper.FrameworkAttribute;
 import org.apache.uima.ducc.ws.helper.DatabaseHelper;
@@ -1589,28 +1587,17 @@ public class DuccHandlerClassic extends
 	{
 		String methodName = "handleServletClassicSystemMachines";
 		duccLogger.trace(methodName, jobid, messages.fetch("enter"));
-		
 		int counter = 0;
-		
 		int sumMemTotal = 0;
-		int sumMemFree = 0;
+		int sumMemReserve = 0;
 		int sumSwapInuse = 0;
-/*
-		int sumSwapDelta = 0;
-*/
 		int sumSwapFree = 0;
 		int sumAliens = 0;
-		
 		String hover;
-		
 		ListIterator<MachineFacts> listIterator;
 		StringBuffer row;
 		StringBuffer data = new StringBuffer();
-		
-		Map<String, IDbMachine> dbMachineMap = DbQuery.getInstance().getMapMachines();
-		
 		DuccMachinesData instance = DuccMachinesData.getInstance();
-		
 		MachineFactsList factsList = instance.getMachineFactsList();
 		if(factsList.size() > 0) {
 			// Total
@@ -1619,11 +1606,8 @@ public class DuccHandlerClassic extends
 				MachineFacts facts = listIterator.next();
 				try {
 					sumMemTotal += Integer.parseInt(facts.memTotal);
-					sumMemFree += Integer.parseInt(facts.memFree);
+					sumMemReserve += Integer.parseInt(facts.memReserve);
 					sumSwapInuse += Integer.parseInt(facts.swapInuse);
-/*
-					sumSwapDelta += Integer.parseInt(facts.swapDelta);
-*/
 					sumSwapFree += Integer.parseInt(facts.swapFree);
 					sumAliens += facts.aliens.size();
 				}
@@ -1648,18 +1632,12 @@ public class DuccHandlerClassic extends
 			// Memory: usable
 			hover = "title=\"total="+sumMemTotal+"\"";
 			row.append("<td align=\"right\" "+hover+">");
-			row.append(""+sumMemFree);
+			row.append(""+sumMemReserve);
 			row.append("</td>");
 			// Swap: inuse
 			row.append("<td align=\"right\">");
 			row.append(""+sumSwapInuse);
 			row.append("</td>");
-/*
-			// Swap: delta
-			row.append("<td align=\"right\">");
-			row.append(""+sumSwapDelta);
-			row.append("</td>");
-*/
 			// Swap: free
 			row.append("<td align=\"right\">");
 			row.append(""+sumSwapFree);
@@ -1686,9 +1664,8 @@ public class DuccHandlerClassic extends
 				row.append((trGet(counter)));
 				// Status
 				StringBuffer sb = new StringBuffer();
-				String[] machineStatus = Helper.getMachineStatus(facts, dbMachineMap);
-				String status = machineStatus[0];
-				hover = "title=\""+machineStatus[1]+"\"";
+				String status = facts.status;
+				hover = "title=\""+facts.statusReason+"\"";
 				if(status.equals("down")) {
 					sb.append("<span "+hover+" class=\"health_red\""+">");
 					sb.append(status);
@@ -1714,12 +1691,24 @@ public class DuccHandlerClassic extends
 				row.append(facts.name);
 				row.append("</td>");
 				// Memory: usable
-				hover = "title=\"total="+facts.memTotal+"\"";
-				row.append("<td align=\"right\" "+hover+">");
 				if(!status.equals("defined")) {
-					row.append(facts.memFree);
+					sb = new StringBuffer();
+					sb.append("total="+facts.memTotal);
+					if(facts.quantum != null) {
+						if(facts.quantum.trim().length() > 0) {
+							sb.append(" ");
+							sb.append("quantum="+facts.quantum.trim());
+						}
+					}
+					hover = "title=\""+sb.toString()+"\"";
+					row.append("<td align=\"right\" "+hover+">");
+					row.append(facts.memReserve);
+					row.append("</td>");
+				}
+				else {
+					row.append("<td align=\"right\">");
+					row.append("</td>");
 				}
-				row.append("</td>");
 				// Swap: inuse
 				sb = new StringBuffer();
 				String swapping = facts.swapInuse;
@@ -1736,24 +1725,6 @@ public class DuccHandlerClassic extends
 					row.append(sb);
 				}
 				row.append("</td>");
-/*
-				// Swap: delta
-				sb = new StringBuffer();
-				String delta = facts.swapDelta;
-				if(delta.equals("0")) {
-					sb.append(delta);
-				}
-				else {
-					sb.append("<span class=\"health_red\">");
-					sb.append(delta);
-					sb.append("</span>");
-				}
-				row.append("<td align=\"right\">");
-				if(!status.equals("defined")) {
-					row.append(sb);
-				}
-				row.append("</td>");
-*/
 				// Swap: free
 				row.append("<td align=\"right\">");
 				if(!status.equals("defined")) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1719194&r1=1719193&r2=1719194&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Thu Dec 10 20:12:41 2015
@@ -77,12 +77,10 @@ import org.apache.uima.ducc.ws.Info;
 import org.apache.uima.ducc.ws.JobInfo;
 import org.apache.uima.ducc.ws.MachineInfo;
 import org.apache.uima.ducc.ws.ReservationInfo;
-import org.apache.uima.ducc.ws.db.DbQuery;
-import org.apache.uima.ducc.ws.db.IDbMachine;
 import org.apache.uima.ducc.ws.helper.BrokerHelper;
+import org.apache.uima.ducc.ws.helper.BrokerHelper.FrameworkAttribute;
 import org.apache.uima.ducc.ws.helper.DatabaseHelper;
 import org.apache.uima.ducc.ws.helper.EntityInfo;
-import org.apache.uima.ducc.ws.helper.BrokerHelper.FrameworkAttribute;
 import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartState;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
 import org.apache.uima.ducc.ws.registry.sort.IServiceAdapter;
@@ -1309,27 +1307,18 @@ public class DuccHandlerJsonFormat exten
 	{
 		String methodName = "handleServletJsonFormatMachinesAaData";
 		duccLogger.trace(methodName, jobid, messages.fetch("enter"));
-		
 		JsonObject jsonResponse = new JsonObject();
 		JsonArray data = new JsonArray();
 		String hover;
 		int sumMemTotal = 0;
-		int sumMemFree = 0;
+		int sumMemReserve = 0;
 		int sumSwapInuse = 0;
-/*
-		int sumSwapDelta = 0;
-*/
 		int sumSwapFree = 0;
 		int sumAliens = 0;
-		
 		ListIterator<MachineFacts> listIterator;
 		JsonArray row;
 		StringBuffer sb;
-		
-		Map<String, IDbMachine> dbMachineMap = DbQuery.getInstance().getMapMachines();
-		
 		DuccMachinesData instance = DuccMachinesData.getInstance();
-		
 		MachineFactsList factsList = instance.getMachineFactsList();
 		if(factsList.size() > 0) {
 			// Total
@@ -1338,11 +1327,8 @@ public class DuccHandlerJsonFormat exten
 				MachineFacts facts = listIterator.next();
 				try {
 					sumMemTotal += Integer.parseInt(facts.memTotal);
-					sumMemFree += Integer.parseInt(facts.memFree);
+					sumMemReserve += Integer.parseInt(facts.memReserve);
 					sumSwapInuse += Integer.parseInt(facts.swapInuse);
-/*
-					sumSwapDelta += Integer.parseInt(facts.swapDelta);
-*/
 					sumSwapFree += Integer.parseInt(facts.swapFree);
 					sumAliens += facts.aliens.size();
 				}
@@ -1359,14 +1345,10 @@ public class DuccHandlerJsonFormat exten
 			row.add(new JsonPrimitive(""));
 			// Memory: usable
 			hover = "title=\"total="+sumMemTotal+"\"";
-			String sumMemFreeWithHover = "<span "+hover+" >"+sumMemFree+"</span>";
-			row.add(new JsonPrimitive(sumMemFreeWithHover));
+			String sumMemReserveWithHover = "<span "+hover+" >"+sumMemReserve+"</span>";
+			row.add(new JsonPrimitive(sumMemReserveWithHover));
 			// Swap: inuse
 			row.add(new JsonPrimitive(sumSwapInuse));
-/*
-			// Swap: delta
-			row.add(new JsonPrimitive(sumSwapDelta));
-*/
 			// Swap: free
 			row.add(new JsonPrimitive(sumSwapFree));
 			// C-Groups
@@ -1383,9 +1365,8 @@ public class DuccHandlerJsonFormat exten
 				row = new JsonArray();
 				// Status
 				sb = new StringBuffer();
-				String[] machineStatus = Helper.getMachineStatus(facts, dbMachineMap);
-				String status = machineStatus[0];
-				hover = "title=\""+machineStatus[1]+"\"";
+				String status = facts.status;
+				hover = "title=\""+facts.statusReason+"\"";
 				if(status.equals("down")) {
 					sb.append("<span "+hover+" class=\"health_red\""+">");
 					sb.append(status);
@@ -1406,9 +1387,17 @@ public class DuccHandlerJsonFormat exten
 				row.add(new JsonPrimitive(facts.name));
 				// Memory: usable
 				if(!status.equals("defined")) {
-					hover = "title=\"total="+facts.memTotal+"\"";
-					String memFreeWithHover = "<span "+hover+" >"+facts.memFree+"</span>";
-					row.add(new JsonPrimitive(memFreeWithHover));
+					sb = new StringBuffer();
+					sb.append("total="+facts.memTotal);
+					if(facts.quantum != null) {
+						if(facts.quantum.trim().length() > 0) {
+							sb.append(" ");
+							sb.append("quantum="+facts.quantum.trim());
+						}
+					}
+					hover = "title=\""+sb.toString()+"\"";
+					String memReserveWithHover = "<span "+hover+" >"+facts.memReserve+"</span>";
+					row.add(new JsonPrimitive(memReserveWithHover));
 				}
 				else {
 					row.add(new JsonPrimitive(""));
@@ -1430,25 +1419,6 @@ public class DuccHandlerJsonFormat exten
 				else {
 					row.add(new JsonPrimitive(""));
 				}
-/*
-				// Swap: delta
-				sb = new StringBuffer();
-				String delta = facts.swapDelta;
-				if(delta.equals("0")) {
-					sb.append(delta);
-				}
-				else {
-					sb.append("<span class=\"health_red\">");
-					sb.append(delta);
-					sb.append("</span>");
-				}
-				if(!status.equals("defined")) {
-					row.add(new JsonPrimitive(sb.toString()));
-				}
-				else {
-					row.add(new JsonPrimitive(""));
-				}
-*/
 				// Swap: free
 				if(!status.equals("defined")) {
 					row.add(new JsonPrimitive(facts.swapFree));
@@ -2059,15 +2029,11 @@ public class DuccHandlerJsonFormat exten
 		String methodName = "handleServletJsonFormatMachines";
 		duccLogger.trace(methodName, jobid, messages.fetch("enter"));
 		StringBuffer sb = new StringBuffer();
-		
-		Map<String, IDbMachine> dbMachineMap = DbQuery.getInstance().getMapMachines();
-		
+	
 		DuccMachinesData instance = DuccMachinesData.getInstance();
 		
 		MachineFactsList factsList = instance.getMachineFactsList();
 		
-		Helper.updateMachineStatus(factsList, dbMachineMap);
-		
 		Gson gson = new Gson();
 		String jSon = gson.toJson(factsList);
 		sb.append(jSon);