Author: degenaro
Date: Tue Dec 11 14:30:10 2018
New Revision: 1848688

URL: http://svn.apache.org/viewvc?rev=1848688&view=rev
Log:
UIMA-5928 DUCC Agent quiesce should wait (forever) for non-fairshare 
displatchables to complete before shutting down

Provide method interface and implementation to determine preemptability status 
of dispatchable entities.

Modified:
    
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ADuccWork.java
    
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWork.java

Modified: 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ADuccWork.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ADuccWork.java?rev=1848688&r1=1848687&r2=1848688&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ADuccWork.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ADuccWork.java
 Tue Dec 11 14:30:10 2018
@@ -18,6 +18,7 @@
 */
 package org.apache.uima.ducc.transport.event.common;
 
+import org.apache.uima.ducc.common.utils.DuccSchedulerClasses;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.event.common.IDuccTypes.DuccType;
 import 
org.apache.uima.ducc.transport.event.common.IDuccWorkService.ServiceDeploymentType;
@@ -94,6 +95,29 @@ public abstract class ADuccWork implemen
                this.duccSchedulingInfo = schedulingInfo;
        }
 
+       // Evaluate preemptability of scheduling class for entity: { 1 == yes, 
-1 == no, 0 == dunno }
+       public int getPreemptableStatus() {
+               int retVal = 0;  // dunno
+               try {
+                       if(duccSchedulingInfo != null) {
+                               String class_name = 
duccSchedulingInfo.getSchedulingClass();
+                               if(class_name != null) {
+                                       DuccSchedulerClasses 
duccSchedulerClasses = DuccSchedulerClasses.getInstance();
+                                       boolean preemptable = 
duccSchedulerClasses.isPreemptable(class_name);
+                                       if(preemptable) {
+                                               retVal = 0+1; // yes
+                                       }
+                                       else {
+                                               retVal = 0-1; // no
+                                       }
+                               }
+                       }
+               }
+               catch(Exception e) {
+                       // dunno
+               }
+               return retVal;
+       }
        
        public Object getStateObject() {
                return stateObject;

Modified: 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWork.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWork.java?rev=1848688&r1=1848687&r2=1848688&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWork.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWork.java
 Tue Dec 11 14:30:10 2018
@@ -41,6 +41,9 @@ public interface IDuccWork extends Ident
        public IDuccSchedulingInfo getSchedulingInfo();
        public void setSchedulingInfo(IDuccSchedulingInfo schedulingInfo);
        
+       // Evaluate preemptability of scheduling class for entity: { 1 == yes, 
-1 == no, 0 == dunno }
+       public int getPreemptableStatus();
+       
        public Object getStateObject();
        public void setStateObject(Object state);
        


Reply via email to