Author: degenaro
Date: Wed Apr 13 13:57:01 2016
New Revision: 1738944

URL: http://svn.apache.org/viewvc?rev=1738944&view=rev
Log:
UIMA-4893 DUCC Web Server (WS) Machines page may display wrong memory free value

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/Distiller.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/Distiller.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/Distiller.java?rev=1738944&r1=1738943&r2=1738944&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/Distiller.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/Distiller.java
 Wed Apr 13 13:57:01 2016
@@ -15,6 +15,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.common.IDuccProcessMap;
 import org.apache.uima.ducc.transport.event.common.IDuccReservation;
 import org.apache.uima.ducc.transport.event.common.IDuccReservationMap;
+import org.apache.uima.ducc.transport.event.common.IDuccSchedulingInfo;
 import org.apache.uima.ducc.transport.event.common.IDuccWork;
 import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
 import org.apache.uima.ducc.transport.event.common.IDuccWorkMap;
@@ -101,7 +102,27 @@ public class Distiller {
                        logger.error(location, jobid, e);
                }
        }
+
+       // The OR publication value "reservation.getBytes()" should be non-zero 
for each
+       // reservation.  However, perhaps due to a "migration to DB" bug the 
field may be zero?
+       // In that case, use the value of 
"getSchedulingInfo().getMemorySizeAllocatedInBytes()"
+       // and log accordingly.  Note that the whole machine may not be shown 
as in-use by the 
+       // unmanaged reservation if the share size is not an exact multiple of 
the machine size 
+       // reported by the DUCC Agent.
        
+       private static long fixBytes(IDuccWork dw) {
+               String location = "fixBytes";
+               long retVal = 0;
+               if(dw != null) {
+                       IDuccSchedulingInfo si = dw.getSchedulingInfo();
+                       SizeBytes sizeBytes = new 
SizeBytes(SizeBytes.Type.Bytes, si.getMemorySizeAllocatedInBytes());
+                       retVal = sizeBytes.getBytes();
+                       String text = "bytes="+retVal;
+                       logger.warn(location, dw.getDuccId(), text);
+               }
+               return retVal;
+       }
+
        // accumulate bytes allocated on each machine for each active 
reservation
        private static void reservations(Map<String,Long> map, IDuccWorkMap 
dwm) {
                String location = "reservations";
@@ -121,6 +142,9 @@ public class Distiller {
                                                                        if(ni 
!= null) {
                                                                                
String name = ni.getName();
                                                                                
if(name != null) {
+                                                                               
        if(bytes == 0) {
+                                                                               
                bytes = fixBytes(dw);
+                                                                               
        }
                                                                                
        add(map, name, bytes);
                                                                                
        SizeBytes sb = new SizeBytes(Type.Bytes,bytes);
                                                                                
        String text = location+": "+name+"="+sb.getGBytes();


Reply via email to