Author: degenaro
Date: Wed Apr 13 20:16:25 2016
New Revision: 1739005
URL: http://svn.apache.org/viewvc?rev=1739005&view=rev
Log:
UIMA-4895 DUCC Web Server (WS) Utilization value may exceed 100%
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
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=1739005&r1=1739004&r2=1739005&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
Wed Apr 13 20:16:25 2016
@@ -32,6 +32,7 @@ import java.util.Date;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
@@ -44,9 +45,13 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.uima.ducc.cli.ws.json.MachineFacts;
+import org.apache.uima.ducc.cli.ws.json.MachineFactsList;
import org.apache.uima.ducc.common.CancelReasons.CancelReason;
+import org.apache.uima.ducc.common.ConvertSafely;
import org.apache.uima.ducc.common.NodeConfiguration;
import org.apache.uima.ducc.common.SizeBytes;
+import org.apache.uima.ducc.common.SizeBytes.Type;
import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties;
import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties.DaemonName;
import org.apache.uima.ducc.common.internationalization.Messages;
@@ -92,7 +97,6 @@ import org.apache.uima.ducc.ws.DuccData;
import org.apache.uima.ducc.ws.DuccDataHelper;
import org.apache.uima.ducc.ws.DuccMachinesData;
import org.apache.uima.ducc.ws.MachineInfo;
-import org.apache.uima.ducc.ws.MachineSummaryInfo;
import org.apache.uima.ducc.ws.authentication.DuccAsUser;
import org.apache.uima.ducc.ws.authentication.DuccAuthenticator;
import org.apache.uima.ducc.ws.helper.BrokerHelper;
@@ -3719,17 +3723,41 @@ public class DuccHandler extends DuccAbs
duccLogger.trace(methodName, null, messages.fetch("enter"));
StringBuffer sb = new StringBuffer();
- MachineSummaryInfo msi =
DuccMachinesData.getInstance().getTotals();
+ long sumReserve = 0;
+ ListIterator<MachineFacts> listIterator;
+ DuccMachinesData instance = DuccMachinesData.getInstance();
+ MachineFactsList factsList = instance.getMachineFactsList();
+
+ listIterator = factsList.listIterator();
+ while(listIterator.hasNext()) {
+ MachineFacts facts = listIterator.next();
+ if(facts.status != null) {
+ if(facts.status.equals("up")) {
+ try {
+ sumReserve +=
ConvertSafely.String2Long(facts.memReserve);
+ }
+ catch(Exception e) {
+ duccLogger.trace(methodName,
jobid, e);
+ }
+ }
+ }
+ }
+
DecimalFormat percentageFormatter = new DecimalFormat("##0.0");
String utilization = "0%";
- long memFree = msi.memFree * SizeBytes.GB;
- long memInuse =
DuccData.getInstance().getLive().getMemoryInuse();
+ SizeBytes sbReserve = new SizeBytes(Type.GBytes, sumReserve);
+ long memReserve = sbReserve.getGBytes();
+
+ long sumInuse =
DuccData.getInstance().getLive().getMemoryInuse();
+
+ SizeBytes sbInuse = new SizeBytes(Type.Bytes, sumInuse);
+ long memInuse = sbInuse.getGBytes();
- if(memFree > 0) {
- double percentage = (((1.0) * memInuse) / ((1.0) *
memFree)) * 100.0;
+ if(memReserve > 0) {
+ double percentage = (((1.0) * memInuse) / ((1.0) *
memReserve)) * 100.0;
utilization =
percentageFormatter.format(percentage)+"%";
}