Author: burn Date: Tue May 5 21:59:03 2015 New Revision: 1677896 URL: http://svn.apache.org/r1677896 Log: UIMA-4372 Reservations now always start a monitor but still wait for operation to complete. cancel_on_interrupt also supported
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java?rev=1677896&r1=1677895&r2=1677896&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java Tue May 5 21:59:03 2015 @@ -527,12 +527,12 @@ public abstract class CliBase String pid = reply.getProperties().getProperty(UiOption.JobId.pname()); if (pid == null ) { - message("ERROR: JobId not found in reply"); + message("ERROR: Request ID not found in reply"); rc = false; } else { friendlyId = Long.parseLong(pid); if ( friendlyId < 0 ) { - message("ERROR: Invalid JobId", pid); + message("ERROR: Invalid Request ID", pid); rc = false; } } Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java?rev=1677896&r1=1677895&r2=1677896&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java Tue May 5 21:59:03 2015 @@ -53,6 +53,7 @@ public class DuccManagedReservationSubmi UiOption.SchedulingClass, UiOption.Specification, UiOption.SuppressConsoleLog, + UiOption.Timestamp, UiOption.WorkingDirectory, UiOption.WaitForCompletion, UiOption.CancelOnInterrupt, @@ -178,41 +179,13 @@ public class DuccManagedReservationSubmi /* * process reply */ - boolean retval = true; - Properties properties = reply.getProperties(); - @SuppressWarnings("unchecked") - ArrayList<String> or_warnings = (ArrayList<String>) properties.get(UiOption.SubmitWarnings.pname()); - if (or_warnings != null) { - for ( String s : or_warnings) { - message("WARN:", s); - } - } - - @SuppressWarnings("unchecked") - ArrayList<String> or_errors = (ArrayList<String>) properties.get(UiOption.SubmitErrors.pname()); - if(or_errors != null) { - for ( String s : or_errors ) { - message("ERROR:", s); - } - retval = false; - } - - if ( retval ) { - String pid = reply.getProperties().getProperty(UiOption.JobId.pname()); - if (pid == null ) { - retval = false; - } else { - friendlyId = Long.parseLong(pid); - if ( friendlyId < 0 ) { - retval = false; - } else { - saveSpec(DuccUiConstants.managed_reservation_properties, serviceProperties); - startMonitors(true, DuccContext.ManagedReservation); // starts conditionally, based on job spec and console listener present - } - } + boolean rc = extractReply(reply); + if (rc) { + saveSpec(DuccUiConstants.managed_reservation_properties, serviceProperties); + startMonitors(true, DuccContext.ManagedReservation); // starts conditionally, based on job spec and console listener present } - return retval; + return rc; } /** Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java?rev=1677896&r1=1677895&r2=1677896&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java Tue May 5 21:59:03 2015 @@ -22,7 +22,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Properties; +import org.apache.uima.ducc.cli.IUiOptions.UiOption; import org.apache.uima.ducc.common.utils.DuccSchedulerClasses; +import org.apache.uima.ducc.transport.event.IDuccContext.DuccContext; import org.apache.uima.ducc.transport.event.SubmitReservationDuccEvent; import org.apache.uima.ducc.transport.event.SubmitReservationReplyDuccEvent; import org.apache.uima.ducc.transport.event.cli.ReservationReplyProperties; @@ -80,6 +82,9 @@ public class DuccReservationSubmit UiOption.SchedulingClass, UiOption.Specification, UiOption.ReservationMemorySize, + UiOption.Timestamp, + UiOption.WaitForCompletion, + UiOption.CancelOnInterrupt, }; @@ -119,7 +124,17 @@ public class DuccReservationSubmit */ boolean rc = extractReply(reply); - if ( rc ) { + if ( !rc ) { + return false; + } + + // If request was accepted, always start a monitor so can report the state + requestProperties.setProperty(UiOption.WaitForCompletion.pname(), "true"); + startMonitors(false, DuccContext.Reservation); // starts conditionally, based on job spec and console listener present + + // Then since this is a synchronous api, wait for request to complete, as only then will the node be available + rc = (getReturnCode() == 0); + if (rc) { nodeList = reply.getProperties().getProperty(UiOption.ReservationNodeList.pname()); } Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java?rev=1677896&r1=1677895&r2=1677896&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/MonitorListener.java Tue May 5 21:59:03 2015 @@ -71,14 +71,20 @@ class MonitorListener String[] argList = arrayList.toArray(new String[0]); switch(context) { - case ManagedReservation: - monitor = new DuccManagedReservationMonitor(base.getCallback()); - break; - case Job: - monitor = new DuccJobMonitor(base.getCallback()); - break; + case Reservation: + monitor = new DuccReservationMonitor(base.getCallback()); + break; + case ManagedReservation: + monitor = new DuccManagedReservationMonitor(base.getCallback()); + break; + case Job: + monitor = new DuccJobMonitor(base.getCallback()); + break; + default: + base.message("ERROR: unsupported monitor context: " + context); + break; } - retVal = monitor.run(argList); + retVal = monitor == null ? 99 : monitor.run(argList); } catch (Exception e) { base.message("ERROR:" + e.toString()); retVal = 999; // error rc's usually positive! // DuccUiConstants.ERROR;