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 2017/01/28 14:45:07 UTC

svn commit: r1780704 - in /uima/uima-ducc/trunk: uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/ uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/regi...

Author: degenaro
Date: Sat Jan 28 14:45:07 2017
New Revision: 1780704

URL: http://svn.apache.org/viewvc?rev=1780704&view=rev
Log:
UIMA-5279 DUCC Web Server (WS) may show incorrect values for PgIn and Swap on mixed cgroup cluster

Modified:
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkJob.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/PamAuthenticate.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/UserAuthenticate.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerUtils.java

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java Sat Jan 28 14:45:07 2017
@@ -335,41 +335,117 @@ public class DuccProcessConcurrentMap ex
 		return list.size();
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public long getPgInCount() {
 		long retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		synchronized(this) {
 			Iterator<IDuccProcess> iterator = this.values().iterator();
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
-				retVal += process.getMajorFaults();
+				long value = process.getMajorFaults();
+				if(value < 0) {
+					flagNoCgroup = true;
+				}
+				else {
+					flagCgroup = true;
+					retVal += value;
+				}
 			}
 		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public double getSwapUsageGb() {
 		double retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		synchronized(this) {
 			Iterator<IDuccProcess> iterator = this.values().iterator();
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
-				double swap = process.getSwapUsage();
-				retVal += swap/Constants.GB;
+				double value = process.getSwapUsage();
+				if(value < 0) {
+					flagNoCgroup = true;
+				}
+				else {
+					flagCgroup = true;
+					retVal += value/Constants.GB;
+				}
+			}
+		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
 			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
 		}
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public double getSwapUsageGbMax() {
 		double retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		synchronized(this) {
 			Iterator<IDuccProcess> iterator = this.values().iterator();
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
-				double swap = process.getSwapUsageMax();
-				retVal += swap/Constants.GB;
+				double value = process.getSwapUsageMax();
+				if(value < 0) {
+					flagNoCgroup = true;
+				}
+				else {
+					flagCgroup = true;
+					retVal += value/Constants.GB;
+				}
+			}
+		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
 			}
 		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 	

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java Sat Jan 28 14:45:07 2017
@@ -341,41 +341,117 @@ public class DuccProcessMap extends Tree
 		return list.size();
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public long getPgInCount() {
 		long retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		synchronized(this) {
 			Iterator<IDuccProcess> iterator = this.values().iterator();
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
-				retVal += process.getMajorFaults();
+				long value = process.getMajorFaults();
+				if(value < 0) {
+					flagNoCgroup = true;
+				}
+				else {
+					flagCgroup = true;
+					retVal += value;
+				}
 			}
 		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public double getSwapUsageGb() {
 		double retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		synchronized(this) {
 			Iterator<IDuccProcess> iterator = this.values().iterator();
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
-				double swap = process.getSwapUsage();
-				retVal += swap/Constants.GB;
+				double value = process.getSwapUsage();
+				if(value < 0) {
+					flagNoCgroup = true;
+				}
+				else {
+					flagCgroup = true;
+					retVal += value/Constants.GB;
+				}
+			}
+		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
 			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
 		}
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public double getSwapUsageGbMax() {
 		double retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		synchronized(this) {
 			Iterator<IDuccProcess> iterator = this.values().iterator();
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
-				double swap = process.getSwapUsageMax();
-				retVal += swap/Constants.GB;
+				double value = process.getSwapUsageMax();
+				if(value < 0) {
+					flagNoCgroup = true;
+				}
+				else {
+					flagCgroup = true;
+					retVal += value/Constants.GB;
+				}
+			}
+		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
 			}
 		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 	

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkJob.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkJob.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkJob.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkJob.java Sat Jan 28 14:45:07 2017
@@ -455,33 +455,81 @@ public class DuccWorkJob extends ADuccWo
 		return (getAliveProcessCount() > 0);
 	}
 	
-	public long getPgInCount() {
+	// choose the smallest negative value, else return the sum
+	private long merge(long jd, long jp) {
 		long retVal = 0;
+		if((jd < 0) && (jp < 0)) {
+			if(jd < jp) {
+				retVal = jd;
+			}
+			else {
+				retVal = jp;
+			}
+		}
+		else if(jd < 0) {
+			retVal = jd;
+		}
+		else if(jp < 0) {
+			retVal = jp;
+		}
+		else {
+			retVal = jd+jp;
+		}
+		return retVal;
+	}
+	
+	// choose the smallest negative value, else return the sum
+	private double merge(double jd, double jp) {
+		double retVal = 0;
+		if((jd < 0) && (jp < 0)) {
+			if(jd < jp) {
+				retVal = jd;
+			}
+			else {
+				retVal = jp;
+			}
+		}
+		else if(jd < 0) {
+			retVal = jd;
+		}
+		else if(jp < 0) {
+			retVal = jp;
+		}
+		else {
+			retVal = jd+jp;
+		}
+		return retVal;
+	}
+	
+	public long getPgInCount() {
+		long jp = 0;
+		long jd = 0;
 		IDuccProcessMap map = getProcessMap();
 		if(map != null) {
-			retVal += map.getPgInCount();
+			jp = map.getPgInCount();
 		}
 		DuccWorkPopDriver driver = getDriver();
 		if(driver != null) {
 			map = driver.getProcessMap();
-			retVal += map.getPgInCount();
+			 jd = map.getPgInCount();
 		}
+		long retVal = merge(jd, jp);
 		return retVal;
 	}
 	
 	public double getSwapUsageGb() {
-		double retVal = 0;
+		double jp = 0;
+		double jd = 0;
 		IDuccProcessMap map = getProcessMap();
 		if(map != null) {
-			double swap = map.getSwapUsageGb();
-			retVal += swap;
+			jp = map.getSwapUsageGb();
 		}
 		DuccWorkPopDriver driver = getDriver();
 		if(driver != null) {
 			map = driver.getProcessMap();
-			double swap = map.getSwapUsageGb();
-			retVal += swap;
+			jp = map.getSwapUsageGb();
 		}
+		double retVal = merge(jd, jp);
 		return retVal;
 	}
 	

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/PamAuthenticate.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/PamAuthenticate.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/PamAuthenticate.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/PamAuthenticate.java Sat Jan 28 14:45:07 2017
@@ -29,6 +29,9 @@ public class PamAuthenticate {
 		System.out.println(result.name()+" "+text);
 	}
 	
+	/*
+	 * See UserAuthentciate.
+	 */
 	protected void launch(String[] args, boolean verbose) {
 		try {
 			if(args == null) {

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/UserAuthenticate.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/UserAuthenticate.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/UserAuthenticate.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/authentication/UserAuthenticate.java Sat Jan 28 14:45:07 2017
@@ -28,6 +28,11 @@ public class UserAuthenticate {
 	
 	private String failure = "failure";
 	
+	/*
+	 * We employ ducc_ling to switch to the target userid.
+	 * As the target userid we invoke authenticate with target userid and pw.
+	 * Only the userid itself or "root" can succeed, hence the use of ducc_ling.
+	 */
 	public String launch(String[] args) {
 		String methodName = "launch";
 		String result = null;

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java Sat Jan 28 14:45:07 2017
@@ -90,48 +90,126 @@ public class ServicesHelper {
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public long getPgIn(IServiceAdapter serviceAdapter) {
 		long retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		List<DuccWorkJob> servicesList = getServicesList(serviceAdapter);
 		for(DuccWorkJob service : servicesList) {
 			IDuccProcessMap map = service.getProcessMap();
 			for(DuccId key : map.keySet()) {
 				IDuccProcess process = map.get(key);
 				if(process.isActive()) {
-					retVal += process.getMajorFaults();
+					long value = process.getMajorFaults();
+					if(value < 0) {
+						flagNoCgroup = true;
+					}
+					else {
+						flagCgroup = true;
+						retVal += value;
+					}
 				}
 			}
 		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public long getSwap(IServiceAdapter serviceAdapter) {
 		long retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		List<DuccWorkJob> servicesList = getServicesList(serviceAdapter);
 		for(DuccWorkJob service : servicesList) {
 			IDuccProcessMap map = service.getProcessMap();
 			for(DuccId key : map.keySet()) {
 				IDuccProcess process = map.get(key);
 				if(process.isActive()) {
-					retVal += process.getSwapUsage();
+					long value = process.getSwapUsage();
+					if(value < 0) {
+						flagNoCgroup = true;
+					}
+					else {
+						flagCgroup = true;
+						retVal += value;
+					}
 				}
 			}
 		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 	
+	/*
+	 * return actual count if all non-negative (all have cgroups)
+	 * return -1 if all -1 (none have cgroups)
+	 * return -2 if mixed (some do and some don't have cgroups) but retVal would have been == 0
+	 * return -3 if mixed (some do and some don't have cgroups) but retVal would have been > 0
+	 */
 	public long getSwapMax(IServiceAdapter serviceAdapter) {
 		long retVal = 0;
+		boolean flagCgroup = false;
+		boolean flagNoCgroup = false;
 		List<DuccWorkJob> servicesList = getServicesList(serviceAdapter);
 		for(DuccWorkJob service : servicesList) {
 			IDuccProcessMap map = service.getProcessMap();
 			for(DuccId key : map.keySet()) {
 				IDuccProcess process = map.get(key);
 				if(process.isActive()) {
-					retVal += process.getSwapUsageMax();
+					long value = process.getSwapUsageMax();
+					if(value < 0) {
+						flagNoCgroup = true;
+					}
+					else {
+						flagCgroup = true;
+						retVal += value;
+					}
 				}
 			}
 		}
+		if(flagCgroup && flagNoCgroup) {
+			if(retVal > 0){
+				retVal = -3;
+			}
+			else {
+				retVal = -2;
+			}
+		}
+		else if(flagNoCgroup) {
+			retVal = -1;
+		}
 		return retVal;
 	}
 }

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java Sat Jan 28 14:45:07 2017
@@ -75,6 +75,9 @@ public abstract class DuccAbstractHandle
 	
 	public static DuccWebAdministrators duccWebAdministrators = DuccWebAdministrators.getInstance();
 	public static DuccWebSessionManager duccWebSessionManager = DuccWebSessionManager.getInstance();
+
+	public final String notAvailable = "N/A";
+	public final String inc = "INC";
 	
 	public final String duccUimaInitializationReport		  = "uima-initialization-report.html";
 	

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Sat Jan 28 14:45:07 2017
@@ -144,9 +144,7 @@ public class DuccHandler extends DuccAbs
 	private enum DetailsType { Job, Reservation, Service };
 	private enum AllocationType { JD, MR, SPC, SPU, UIMA };
 	private enum LogType { POP, UIMA };
-	
-	private String notAvailable = "N/A";
-	
+
 	private DuccAuthenticator duccAuthenticator = DuccAuthenticator.getInstance();
 	
 	private String duccVersion						= duccContext+"/version";

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java Sat Jan 28 14:45:07 2017
@@ -53,7 +53,6 @@ import org.apache.uima.ducc.common.utils
 import org.apache.uima.ducc.common.utils.TimeStamp;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.orchestrator.jd.scheduler.JdReservation;
-import org.apache.uima.ducc.transport.Constants;
 import org.apache.uima.ducc.transport.event.common.DuccWorkJob;
 import org.apache.uima.ducc.transport.event.common.DuccWorkReservation;
 import org.apache.uima.ducc.transport.event.common.IDuccPerWorkItemStatistics;
@@ -306,14 +305,31 @@ public class DuccHandlerClassic extends
 		}
 		catch(Exception e) {
 		}
-		double swapping = job.getSwapUsageGbMax();
-		if((swapping * faults) > 0) {
-			sb.append("<span class=\"health_red\""+">");
-		}
-		else {
-			sb.append("<span class=\"health_black\""+">");
+		int ifaults = (int)faults;
+		switch(ifaults) {
+		case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+			sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+			sb.append(inc);
+			break;
+		case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+			sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+			sb.append(inc);
+			break;
+		case -1: // (none have cgroups)
+			sb.append("<span title=\"not available\" class=\"health_black\""+">");
+			sb.append(notAvailable);
+			break;
+		default: // (all have cgroups)
+			double swapping = job.getSwapUsageGbMax();
+			if((swapping * faults) > 0) {
+				sb.append("<span class=\"health_red\""+">");
+			}
+			else {
+				sb.append("<span class=\"health_black\""+">");
+			}
+			sb.append(faults);
+			break;
 		}
-		sb.append(faults);
 		sb.append("</span>");
 		sb.append("</td>");
 		// Swap
@@ -321,18 +337,41 @@ public class DuccHandlerClassic extends
 		String swapSizeDisplay = "";
 		String swapSizeHover = "";
 		title = "";
-		double swapBytes = 0;
-		swapBytes = DuccHandlerUtils.getSwapSizeBytes(job);
-		swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
-		swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
-		title = "title="+"\""+swapSizeHover+"\"";
-		if(swapBytes > 0) {
-			sb.append("<span "+title+" "+"class=\"health_red\""+">");
+		double swap = 0;
+		if(job.isCompleted()) {
+			swap = job.getSwapUsageGbMax();
 		}
 		else {
-			sb.append("<span "+title+" "+"class=\"health_black\""+">");
+			swap = job.getSwapUsageGb();
+		}
+		int iswap = (int)swap;
+		switch(iswap) {
+		case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+			sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+			sb.append(inc);
+			break;
+		case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+			sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+			sb.append(inc);
+			break;
+		case -1: // (none have cgroups)
+			sb.append("<span title=\"not available\" class=\"health_black\""+">");
+			sb.append(notAvailable);
+			break;
+		default: // (all have cgroups)
+			double swapBytes = swap*DuccHandlerUtils.GB;
+			swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
+			swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
+			title = "title="+"\""+swapSizeHover+"\"";
+			if(swapBytes > 0) {
+				sb.append("<span "+title+" "+"class=\"health_red\""+">");
+			}
+			else {
+				sb.append("<span "+title+" "+"class=\"health_black\""+">");
+			}
+			sb.append(swapSizeDisplay);
+			break;
 		}
-		sb.append(swapSizeDisplay);
 		sb.append("</span>");
 		sb.append("</td>");
 		// Memory
@@ -788,38 +827,78 @@ public class DuccHandlerClassic extends
 			}
 			catch(Exception e) {
 			}
-			double swapping = job.getSwapUsageGbMax();
-			if((swapping * faults) > 0) {
-				sb.append("<span class=\"health_red\""+">");
-			}
-			else {
-				sb.append("<span class=\"health_black\""+">");
+			int ifaults = (int)faults;
+			switch(ifaults) {
+			case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+				sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+				sb.append(inc);
+				break;
+			case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+				sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+				sb.append(inc);
+				break;
+			case -1: // (none have cgroups)
+				sb.append("<span title=\"not available\" class=\"health_black\""+">");
+				sb.append(notAvailable);
+				break;
+			default: // (all have cgroups)
+				double swapping = job.getSwapUsageGbMax();
+				if((swapping * faults) > 0) {
+					sb.append("<span class=\"health_red\""+">");
+				}
+				else {
+					sb.append("<span class=\"health_black\""+">");
+				}
+				sb.append(faults);
+				break;
 			}
-			sb.append(faults);
 			sb.append("</span>");
 		}
 		sb.append("</td>");
 		// Swap
 		sb.append("<td align=\"right\">");
-		String swapSizeDisplay = "";
-		String swapSizeHover = "";
-		title = "";
-		double swapBytes = 0;
 		if(duccwork instanceof DuccWorkJob) {
 			DuccWorkJob job = (DuccWorkJob) duccwork;
-			swapBytes = DuccHandlerUtils.getSwapSizeBytes(job);
-			swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
-			swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
-			title = "title="+"\""+swapSizeHover+"\"";
-		}
-		if(swapBytes > 0) {
-			sb.append("<span "+title+" "+"class=\"health_red\""+">");
-		}
-		else {
-			sb.append("<span "+title+" "+"class=\"health_black\""+">");
+			String swapSizeDisplay = "";
+			String swapSizeHover = "";
+			title = "";
+			double swap = 0;
+			if(job.isCompleted()) {
+				swap = job.getSwapUsageGbMax();
+			}
+			else {
+				swap = job.getSwapUsageGb();
+			}
+			int iswap = (int)swap;
+			switch(iswap) {
+			case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+				sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+				sb.append(inc);
+				break;
+			case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+				sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+				sb.append(inc);
+				break;
+			case -1: // (none have cgroups)
+				sb.append("<span title=\"not available\" class=\"health_black\""+">");
+				sb.append(notAvailable);
+				break;
+			default: // (all have cgroups)
+				double swapBytes = swap*DuccHandlerUtils.GB;
+				swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
+				swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
+				title = "title="+"\""+swapSizeHover+"\"";
+				if(swapBytes > 0) {
+					sb.append("<span "+title+" "+"class=\"health_red\""+">");
+				}
+				else {
+					sb.append("<span "+title+" "+"class=\"health_black\""+">");
+				}
+				sb.append(swapSizeDisplay);
+				break;
+			}
+			sb.append("</span>");
 		}
-		sb.append(swapSizeDisplay);
-		sb.append("</span>");
 		sb.append("</td>");
 		// Memory
 		IDuccSchedulingInfo si;
@@ -1094,15 +1173,31 @@ public class DuccHandlerClassic extends
 				}
 				catch(Exception e) {
 				}
-				double swapping = service.getSwap();
-				swapping = swapping/Constants.GB;
-				if((swapping * faults) > 0) {
-					sb.append("<span class=\"health_red\""+">");
-				}
-				else {
-					sb.append("<span class=\"health_black\""+">");
+				int ifaults = (int)faults;
+				switch(ifaults) {
+				case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+					sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+					sb.append(inc);
+					break;
+				case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+					sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+					sb.append(inc);
+					break;
+				case -1: // (none have cgroups)
+					sb.append("<span title=\"not available\" class=\"health_black\""+">");
+					sb.append(notAvailable);
+					break;
+				default: // (all have cgroups)
+					double swapping = service.getSwap();
+					if((swapping * faults) > 0) {
+						sb.append("<span class=\"health_red\""+">");
+					}
+					else {
+						sb.append("<span class=\"health_black\""+">");
+					}
+					sb.append(faults);
+					break;
 				}
-				sb.append(faults);
 				sb.append("</span>");
 				sb.append("</td>");
 				// Swap
@@ -1110,18 +1205,35 @@ public class DuccHandlerClassic extends
 				String swapSizeDisplay = "";
 				String swapSizeHover = "";
 				String title = "";
-				double swapBytes = 0;
-				swapBytes = service.getSwap();
-				swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
-				swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
-				title = "title="+"\""+swapSizeHover+"\"";
-				if(swapBytes > 0) {
-					sb.append("<span "+title+" "+"class=\"health_red\""+">");
-				}
-				else {
-					sb.append("<span "+title+" "+"class=\"health_black\""+">");
+				double swap = service.getSwap();
+				int iswap = (int)swap;
+				switch(iswap) {
+				case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+					sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+					sb.append(inc);
+					break;
+				case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+					sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+					sb.append(inc);
+					break;
+				case -1: // (none have cgroups)
+					sb.append("<span title=\"not available\" class=\"health_black\""+">");
+					sb.append(notAvailable);
+					break;
+				default: // (all have cgroups)
+					double swapBytes = swap;
+					swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
+					swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
+					title = "title="+"\""+swapSizeHover+"\"";
+					if(swapBytes > 0) {
+						sb.append("<span "+title+" "+"class=\"health_red\""+">");
+					}
+					else {
+						sb.append("<span "+title+" "+"class=\"health_black\""+">");
+					}
+					sb.append(swapSizeDisplay);
+					break;
 				}
-				sb.append(swapSizeDisplay);
 				sb.append("</span>");
 				sb.append("</td>");
 				// Size

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Sat Jan 28 14:45:07 2017
@@ -57,7 +57,6 @@ import org.apache.uima.ducc.common.utils
 import org.apache.uima.ducc.common.utils.TimeStamp;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.orchestrator.jd.scheduler.JdReservation;
-import org.apache.uima.ducc.transport.Constants;
 import org.apache.uima.ducc.transport.event.common.DuccWorkJob;
 import org.apache.uima.ducc.transport.event.common.DuccWorkReservation;
 import org.apache.uima.ducc.transport.event.common.IDuccPerWorkItemStatistics;
@@ -332,42 +331,86 @@ public class DuccHandlerJsonFormat exten
 		// Pgin
 		sb = new StringBuffer();
 		sb.append("<span>");
+		//
 		long faults = 0;
 		try {
 			faults = job.getPgInCount();
 		}
 		catch(Exception e) {
 		}
-		double swapping = job.getSwapUsageGbMax();
-		if((swapping * faults) > 0) {
-			sb.append("<span class=\"health_red\""+">");
-		}
-		else {
-			sb.append("<span class=\"health_black\""+">");
+		int ifaults = (int)faults;
+		switch(ifaults) {
+		case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+			sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+			sb.append(inc);
+			break;
+		case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+			sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+			sb.append(inc);
+			break;
+		case -1: // (none have cgroups)
+			sb.append("<span title=\"not available\" class=\"health_black\""+">");
+			sb.append(notAvailable);
+			break;
+		default: // (all have cgroups)
+			double swapping = job.getSwapUsageGbMax();
+			if((swapping * faults) > 0) {
+				sb.append("<span class=\"health_red\""+">");
+			}
+			else {
+				sb.append("<span class=\"health_black\""+">");
+			}
+			sb.append(faults);
+			break;
 		}
-		sb.append(faults);
 		sb.append("</span>");
+		//
 		sb.append("</span>");
 		row.add(new JsonPrimitive(sb.toString()));
 		// Swap
 		sb = new StringBuffer();
 		sb.append("<span>");
+		//
 		String swapSizeDisplay = "";
 		String swapSizeHover = "";
 		title = "";
-		double swapBytes = 0;
-		swapBytes = DuccHandlerUtils.getSwapSizeBytes(job);
-		swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
-		swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
-		title = "title="+"\""+swapSizeHover+"\"";
-		if(swapBytes > 0) {
-			sb.append("<span "+title+" "+"class=\"health_red\""+">");
+		double swap = 0;
+		if(job.isCompleted()) {
+			swap = job.getSwapUsageGbMax();
 		}
 		else {
-			sb.append("<span "+title+" "+"class=\"health_black\""+">");
+			swap = job.getSwapUsageGb();
+		}
+		int iswap = (int)swap;
+		switch(iswap) {
+		case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+			sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+			sb.append(inc);
+			break;
+		case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+			sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+			sb.append(inc);
+			break;
+		case -1: // (none have cgroups)
+			sb.append("<span title=\"not available\" class=\"health_black\""+">");
+			sb.append(notAvailable);
+			break;
+		default: // (all have cgroups)
+			double swapBytes = swap*DuccHandlerUtils.GB;
+			swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
+			swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
+			title = "title="+"\""+swapSizeHover+"\"";
+			if(swapBytes > 0) {
+				sb.append("<span "+title+" "+"class=\"health_red\""+">");
+			}
+			else {
+				sb.append("<span "+title+" "+"class=\"health_black\""+">");
+			}
+			sb.append(swapSizeDisplay);
+			break;
 		}
-		sb.append(swapSizeDisplay);
 		sb.append("</span>");
+		//
 		sb.append("</span>");
 		row.add(new JsonPrimitive(sb.toString()));
 		// Memory
@@ -878,6 +921,7 @@ public class DuccHandlerJsonFormat exten
 		// PgIn
 		sb = new StringBuffer();
 		sb.append("<span>");
+		//
 		if(duccwork instanceof DuccWorkJob) {
 			DuccWorkJob job = (DuccWorkJob) duccwork;
 			long faults = 0;
@@ -886,40 +930,83 @@ public class DuccHandlerJsonFormat exten
 			}
 			catch(Exception e) {
 			}
-			double swapping = job.getSwapUsageGbMax();
-			if((swapping * faults) > 0) {
-				sb.append("<span class=\"health_red\""+">");
-			}
-			else {
-				sb.append("<span class=\"health_black\""+">");
+			int ifaults = (int)faults;
+			switch(ifaults) {
+			case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+				sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+				sb.append(inc);
+				break;
+			case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+				sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+				sb.append(inc);
+				break;
+			case -1: // (none have cgroups)
+				sb.append("<span title=\"not available\" class=\"health_black\""+">");
+				sb.append(notAvailable);
+				break;
+			default: // (all have cgroups)
+				double swapping = job.getSwapUsageGbMax();
+				if((swapping * faults) > 0) {
+					sb.append("<span class=\"health_red\""+">");
+				}
+				else {
+					sb.append("<span class=\"health_black\""+">");
+				}
+				sb.append(faults);
+				break;
 			}
-			sb.append(faults);
 			sb.append("</span>");
 		}
+		//
 		sb.append("</span>");
 		row.add(new JsonPrimitive(sb.toString()));
 		// Swap
 		sb = new StringBuffer();
 		sb.append("<span>");
-		String swapSizeDisplay = "";
-		String swapSizeHover = "";
-		title = "";
-		double swapBytes = 0;
+		//
 		if(duccwork instanceof DuccWorkJob) {
 			DuccWorkJob job = (DuccWorkJob) duccwork;
-			swapBytes = DuccHandlerUtils.getSwapSizeBytes(job);
-			swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
-			swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
-			title = "title="+"\""+swapSizeHover+"\"";
-		}
-		if(swapBytes > 0) {
-			sb.append("<span "+title+" "+"class=\"health_red\""+">");
-		}
-		else {
-			sb.append("<span "+title+" "+"class=\"health_black\""+">");
+			String swapSizeDisplay = "";
+			String swapSizeHover = "";
+			title = "";
+			double swap = 0;
+			if(job.isCompleted()) {
+				swap = job.getSwapUsageGbMax();
+			}
+			else {
+				swap = job.getSwapUsageGb();
+			}
+			int iswap = (int)swap;
+			switch(iswap) {
+			case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+				sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
+				sb.append(inc);
+				break;
+			case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+				sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
+				sb.append(inc);
+				break;
+			case -1: // (none have cgroups)
+				sb.append("<span title=\"not available\" class=\"health_black\""+">");
+				sb.append(notAvailable);
+				break;
+			default: // (all have cgroups)
+				double swapBytes = swap*DuccHandlerUtils.GB;
+				swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
+				swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
+				title = "title="+"\""+swapSizeHover+"\"";
+				if(swapBytes > 0) {
+					sb.append("<span "+title+" "+"class=\"health_red\""+">");
+				}
+				else {
+					sb.append("<span "+title+" "+"class=\"health_black\""+">");
+				}
+				sb.append(swapSizeDisplay);
+				break;
+			}
+			sb.append("</span>");
 		}
-		sb.append(swapSizeDisplay);
-		sb.append("</span>");
+		//
 		sb.append("</span>");
 		row.add(new JsonPrimitive(sb.toString()));
 		// Memory
@@ -1236,42 +1323,80 @@ public class DuccHandlerJsonFormat exten
 				// Pgin
 				col = new StringBuffer();
 				col.append("<span>");
+				//
 				long faults = 0;
 				try {
 					faults = service.getPgIn();
 				}
 				catch(Exception e) {
 				}
-				double swapping = service.getSwap();
-				swapping = swapping/Constants.GB;
-				if((swapping * faults) > 0) {
-					col.append("<span class=\"health_red\""+">");
-				}
-				else {
-					col.append("<span class=\"health_black\""+">");
+				int ifaults = (int)faults;
+				switch(ifaults) {
+				case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+					col.append("<span title=\"incomplete\" class=\"health_red\""+">");
+					col.append(inc);
+					break;
+				case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+					col.append("<span title=\"incomplete\" class=\"health_black\""+">");
+					col.append(inc);
+					break;
+				case -1: // (none have cgroups)
+					col.append("<span title=\"not available\" class=\"health_black\""+">");
+					col.append(notAvailable);
+					break;
+				default: // (all have cgroups)
+					double swapping = service.getSwap();
+					if((swapping * faults) > 0) {
+						col.append("<span class=\"health_red\""+">");
+					}
+					else {
+						col.append("<span class=\"health_black\""+">");
+					}
+					col.append(faults);
+					break;
 				}
-				col.append(faults);
+				col.append("</span>");
+				//
 				col.append("</span>");
 				row.add(new JsonPrimitive(col.toString()));
 				// Swap
 				col = new StringBuffer();
 				col.append("<span>");
+				//
 				String swapSizeDisplay = "";
 				String swapSizeHover = "";
 				String title = "";
-				double swapBytes = 0;
-				swapBytes = service.getSwap();
-				swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
-				swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
-				title = "title="+"\""+swapSizeHover+"\"";
-				if(swapBytes > 0) {
-					col.append("<span "+title+" "+"class=\"health_red\""+">");
-				}
-				else {
-					col.append("<span "+title+" "+"class=\"health_black\""+">");
+				double swap = service.getSwap();
+				int iswap = (int)swap;
+				switch(iswap) {
+				case -3: // (some do and some don't have cgroups) but retVal would have been > 0
+					col.append("<span title=\"incomplete\" class=\"health_red\""+">");
+					col.append(inc);
+					break;
+				case -2: // (some do and some don't have cgroups) but retVal would have been == 0
+					col.append("<span title=\"incomplete\" class=\"health_black\""+">");
+					col.append(inc);
+					break;
+				case -1: // (none have cgroups)
+					col.append("<span title=\"not available\" class=\"health_black\""+">");
+					col.append(notAvailable);
+					break;
+				default: // (all have cgroups)
+					double swapBytes = swap;
+					swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
+					swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
+					title = "title="+"\""+swapSizeHover+"\"";
+					if(swapBytes > 0) {
+						col.append("<span "+title+" "+"class=\"health_red\""+">");
+					}
+					else {
+						col.append("<span "+title+" "+"class=\"health_black\""+">");
+					}
+					col.append(swapSizeDisplay);
+					break;
 				}
-				col.append(swapSizeDisplay);
 				col.append("</span>");
+				//
 				col.append("</span>");
 				row.add(new JsonPrimitive(col.toString()));
 				// Size

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerUtils.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerUtils.java?rev=1780704&r1=1780703&r2=1780704&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerUtils.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerUtils.java Sat Jan 28 14:45:07 2017
@@ -20,9 +20,6 @@ package org.apache.uima.ducc.ws.server;
 
 import java.text.DecimalFormat;
 
-import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
-
-
 public class DuccHandlerUtils {
 
 	public static String warn(String text) {
@@ -75,14 +72,6 @@ public class DuccHandlerUtils {
 	
 	// *****
 	
-	public static double getSwapSizeBytes(IDuccWorkJob job) {
-		double swapBytes = job.getSwapUsageGb()*GB;
-		if(job.isCompleted()) {
-			swapBytes = job.getSwapUsageGbMax()*GB;
-		}
-		return swapBytes;
-	}
-	
 	private static DecimalFormat formatter = new DecimalFormat("###0.0");
 	
 	public static String getSwapSizeDisplay(double swapBytes) {
@@ -90,9 +79,9 @@ public class DuccHandlerUtils {
 		return retVal;
 	}
 	
-	private static double GB = Math.pow(10,9);
-	private static double MB = Math.pow(10,6);
-	private static double KB = Math.pow(10,3);
+	public static double GB = Math.pow(10,9);
+	public static double MB = Math.pow(10,6);
+	public static double KB = Math.pow(10,3);
 
 	public static String getSwapSizeHover(double swapBytes) {
 		String retVal = null;