Author: degenaro
Date: Thu May 19 10:26:16 2016
New Revision: 1744552

URL: http://svn.apache.org/viewvc?rev=1744552&view=rev
Log:
UIMA-4923 DUCC Web Server (WS) should not display nodes that have been removed 
from service on Machines page

In non-DB case, WS should round down usable & free sizes for display according 
to ducc.rm.share.quantum

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.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=1744552&r1=1744551&r2=1744552&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 May 19 10:26:16 2016
@@ -37,6 +37,7 @@ import org.apache.uima.ducc.common.node.
 import org.apache.uima.ducc.common.node.metrics.NodeUsersInfo.NodeProcess;
 import org.apache.uima.ducc.common.utils.DuccLogger;
 import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
+import org.apache.uima.ducc.common.utils.DuccPropertiesResolver;
 import org.apache.uima.ducc.common.utils.TimeStamp;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.event.NodeMetricsUpdateDuccEvent;
@@ -436,13 +437,57 @@ public class DuccMachinesData {
                }
        }
        
+       
+       
+       /**
+        * Adjust memory value by rounding down 
+        * to multiple of rm.share.quantum GB
+        */
+       private String calculateMem(long quantum, String memParm) {
+               String location = "calculateMem";
+               String retVal = "0";
+               if(memParm!= null) {
+                       String memString = memParm.trim();
+                       if(memString.length() > 0) {
+                               try {
+                                       long memRaw = Long.parseLong(memString);
+                                       long memAdj = (memRaw / quantum) * 
quantum;
+                                       retVal = ""+memAdj;
+                               }
+                               catch(Exception e) {
+                                       logger.error(location, jobid, e);
+                               }
+                       }
+               }
+               return retVal;
+       }
+       
+       /**
+        * Fetch quantum from ducc.properties, default is 1.
+        */
+       private long getQuantum() {
+               String location = "getQuantum";
+               long retVal = 1;
+               try {
+                       DuccPropertiesResolver dpr = 
DuccPropertiesResolver.getInstance();
+                       String quantum = 
dpr.getFileProperty(DuccPropertiesResolver.ducc_rm_share_quantum);
+                       retVal = Long.parseLong(quantum.trim());
+               }
+               catch(Exception e) {
+                       logger.error(location, jobid, e);
+               }
+               return retVal;
+       }
+       
        /**
         * Create a machines facts list based 
         * in part on the information provided by the Agents, and
         * in part on the data comprising the ducc.nodes file.
         */
        private void updateMachineFactsListAgent() {
+               
                MachineFactsList factsList = new MachineFactsList();
+               long quantum = getQuantum();
                ConcurrentSkipListMap<MachineInfo,NodeId> sortedMachines = 
getSortedMachines();
                Iterator<MachineInfo> iterator;
                iterator = sortedMachines.keySet().iterator();
@@ -451,8 +496,8 @@ public class DuccMachinesData {
                        String status = machineInfo.getStatus();
                        String ip = machineInfo.getIp();
                        String name = machineInfo.getName();
-                       String memTotal = machineInfo.getMemTotal();
-                       String memFree = machineInfo.getMemFree();
+                       String memTotal = calculateMem(quantum, 
machineInfo.getMemTotal());
+                       String memFree = calculateMem(quantum, 
machineInfo.getMemFree());
                        String swapInuse = machineInfo.getSwapInuse();
                        String swapDelta = ""+machineInfo.getSwapDelta();
                        String swapFree = machineInfo.getSwapFree();


Reply via email to