Author: challngr
Date: Fri Jan 15 16:34:33 2016
New Revision: 1724848

URL: http://svn.apache.org/viewvc?rev=1724848&view=rev
Log:
UIMA-4577 Must update db when reassigning share under defrag.

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Machine.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Machine.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Machine.java?rev=1724848&r1=1724847&r2=1724848&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Machine.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Machine.java
 Fri Jan 15 16:34:33 2016
@@ -335,6 +335,13 @@ public class Machine
         this.virtual_share_order = share_order - blacklisted_shares;
     }
 
+    public void reassignShare(Share s, IRmJob newjob)
+    {
+        removeShare(s);
+        s.reassignJob(newjob);
+        assignShare(s);
+    }
+
     public void assignShare(Share s)
     {
        String methodName = "assignShare";
@@ -345,9 +352,9 @@ public class Machine
             // Not transactional.  If this turns into a problem we'll have to 
find a way
                        persistence.setNodeProperties(id, RmNodes.Assignments, 
activeShares.size(), RmNodes.NPAssignments, countNpShares(), 
RmNodes.SharesLeft, shares_left);
                        persistence.addAssignment(id, s.getJob().getId(), s, 
getQuantum(), s.getJob().getShortType()); // update jobs on machine and 
specific shares
-            logger.info(methodName, null, "Time to assign share in db", 
System.currentTimeMillis() - now);
+            logger.info(methodName, s.getJob().getId(), "Time to assign 
share", s.getId(), "in db", System.currentTimeMillis() - now);
                } catch (Exception e) {
-            logger.warn(methodName, null, "Cannot save state; shares_left", 
shares_left, e);
+            logger.warn(methodName, s.getJob().getId(), "Cannot save state for 
share", s.getId(), "shares_left", shares_left, e);
                }
 
     }
@@ -364,9 +371,9 @@ public class Machine
             // Not transactional.  If this turns into a problem we'll have to 
find a way
                        persistence.setNodeProperties(id, RmNodes.Assignments,  
activeShares.size(), RmNodes.NPAssignments, countNpShares(),  
RmNodes.SharesLeft, shares_left);
                        persistence.removeAssignment(id, s.getJob().getId(), 
s);  // update jobs on machine and specific shares
-            logger.info(methodName, null, "Time to remove share in db", 
System.currentTimeMillis() - now);
+            logger.info(methodName, s.getJob().getId(), "Time to remove 
share", s.getId(), "in db", System.currentTimeMillis() - now);
                } catch (Exception e) {
-            logger.warn(methodName, null, "Cannot save state; shares_left", 
shares_left);
+            logger.warn(methodName, s.getJob().getId(), "Cannot save state for 
share", s.getId(), "shares_left", shares_left);
                }
     }
 

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java?rev=1724848&r1=1724847&r2=1724848&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/NodepoolScheduler.java
 Fri Jan 15 16:34:33 2016
@@ -1872,7 +1872,8 @@ public class NodepoolScheduler
         if ( s.isPending() ) {
             if (s.getShareOrder() == nj.getShareOrder() ) {                    
        // same size, reassign it directly
                 logger.debug(methodName, nj.getId(), "Reassign expanded 
share", s.toString(), "from", rich_j.getId());
-                s.reassignJob(nj);
+                Machine m = s.getMachine();
+                m.reassignShare(s, nj);
                 rich_j.cancelPending(s);
                 nj.assignShare(s);                
                 return false;


Reply via email to