You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2015/05/05 15:12:19 UTC

svn commit: r1677819 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli: DuccMonitor.java DuccReservationMonitor.java IUiOptions.java

Author: degenaro
Date: Tue May  5 13:12:18 2015
New Revision: 1677819

URL: http://svn.apache.org/r1677819
Log:
UIMA-4372 DUCC Reservations will hang with no user messages if resources are unavailable

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java   (with props)
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java?rev=1677819&r1=1677818&r2=1677819&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccMonitor.java Tue May  5 13:12:18 2015
@@ -46,6 +46,7 @@ public abstract class DuccMonitor {
 	protected static final String StateRunning = "Running";
 	protected static final String StateCompleting = "Completing";
 	protected static final String StateCompleted = "Completed";
+	protected static final String WaitingForResources = "WaitingForResources";
 
     protected CommandLine command_line = null;
 
@@ -87,6 +88,14 @@ public abstract class DuccMonitor {
 	private IUiOption[] optsMonitorJob = new UiOption[] { UiOption.Help,
 			UiOption.Debug, UiOption.Quiet, UiOption.Timestamp, UiOption.JobId, };
 
+	private IUiOption[] optsSubmitReservation = new UiOption[] {
+			UiOption.Help, UiOption.Debug, UiOption.Quiet, UiOption.Timestamp,
+			UiOption.ReservationId, UiOption.CancelOnInterrupt, };
+
+	private IUiOption[] optsMonitorReservation = new UiOption[] {
+			UiOption.Help, UiOption.Debug, UiOption.Quiet, UiOption.Timestamp,
+			UiOption.ReservationId, };
+	
 	private IUiOption[] optsSubmitManagedReservation = new UiOption[] {
 			UiOption.Help, UiOption.Debug, UiOption.Quiet, UiOption.Timestamp,
 			UiOption.ManagedReservationId, UiOption.CancelOnInterrupt, };
@@ -144,6 +153,13 @@ public abstract class DuccMonitor {
 					opts = optsMonitorJob;
 				}
 				break;
+			case Reservation:
+				if (submit) {
+					opts = optsSubmitReservation;
+				} else {
+					opts = optsMonitorReservation;
+				}
+				break;
 			case ManagedReservation:
 				if (submit) {
 					opts = optsSubmitManagedReservation;
@@ -295,9 +311,14 @@ public abstract class DuccMonitor {
 			}
 			if (command_line.contains(UiOption.JobId)) {
 				id = command_line.get(UiOption.JobId);
-			} else if (command_line.contains(UiOption.ManagedReservationId)) {
+			}
+			else if (command_line.contains(UiOption.ManagedReservationId)) {
 				id = command_line.get(UiOption.ManagedReservationId);
-            } else {
+            } 
+			else if (command_line.contains(UiOption.ReservationId)) {
+				id = command_line.get(UiOption.ReservationId);
+            } 
+			else {
                 System.out.println(command_line.formatHelp(DuccJobMonitor.class.getName()));
 				return RC_HELP;
 			}
@@ -311,6 +332,8 @@ public abstract class DuccMonitor {
 		String urlString = getUrl(id);
 		String lastMessage = "";
 		String thisMessage = "";
+		String lastRationale = "";
+		String thisRationale = "";
 		StringBuffer message = new StringBuffer();
 		message.append("id:" + id);
 		message.append(" ");
@@ -389,6 +412,15 @@ public abstract class DuccMonitor {
 						lastMessage = thisMessage;
 					}
 				}
+				if (state.equals(WaitingForResources)) {
+					if (!monitorInfo.rationale.equals("")) {
+						thisRationale = monitorInfo.rationale;
+						if (!thisRationale.equals(lastRationale)) {
+							info(thisRationale);
+							lastRationale = thisRationale;
+						}
+					}
+				}
 				if (state.equals(StateCompleted)) {
 					// See Jira 2911
 					//if (monitorInfo.procs.equals("0")) {

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java?rev=1677819&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java Tue May  5 13:12:18 2015
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.cli;
+
+import java.util.ArrayList;
+
+//import org.apache.commons.cli.HelpFormatter;
+//import org.apache.commons.cli.Options;
+import org.apache.uima.ducc.cli.IUiOptions.UiOption;
+import org.apache.uima.ducc.common.CancelReasons.CancelReason;
+import org.apache.uima.ducc.transport.event.IDuccContext.DuccContext;
+
+public class DuccReservationMonitor extends DuccMonitor implements IDuccMonitor {
+
+	public static String servlet = "/ducc-servlet/proxy-reservation-status";
+	
+	public DuccReservationMonitor() {
+		super(DuccContext.Reservation, true);
+	}
+	
+	public DuccReservationMonitor(IDuccCallback messageProcessor) {
+		super(DuccContext.Reservation, true, messageProcessor);
+	}
+	
+	private DuccReservationMonitor(String uniqueSignature) {
+		super(DuccContext.Reservation, false);
+	}
+
+	public static void main(String[] args) {
+		int code = RC_FAILURE;
+		try {
+			String unique = null;
+			DuccReservationMonitor reservationMonotor = new DuccReservationMonitor(unique);
+			code = reservationMonotor.run(args);
+		} 
+		catch (Exception e) {
+			e.printStackTrace();
+		}
+		System.exit(code);
+	}
+	
+	// @Override
+	// public void help(IUiOption[] options) 
+    // {
+    //     command_line.formatHelp(this.getClass().getName());
+	// 	return;
+	// }
+	
+	@Override
+	public void cancel() {
+		try {
+       		ArrayList<String> arrayList = new ArrayList<String>();
+       		arrayList.add("--"+UiOption.JobId.pname());
+       		arrayList.add(getId());
+       		arrayList.add("--"+UiOption.Reason.pname());
+       		String reason = CancelReason.MonitorEnded.getText();
+       		arrayList.add("\""+reason+"\"");
+       		String[] argList = arrayList.toArray(new String[0]);
+    		DuccReservationCancel reservationCancel = new DuccReservationCancel(argList);
+    		boolean retVal = reservationCancel.execute();
+    		debug("cancel rc:"+retVal);
+    	} catch (Exception e) {
+    		messageProcessor.status(e.toString());
+    	}
+	}
+
+	@Override
+	public String getUrl(String id) {
+		String urlString = "http://"+getHost()+":"+getPort()+servlet+"?id="+id;
+		debug(urlString);
+		return urlString;
+	}
+}

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationMonitor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java?rev=1677819&r1=1677818&r2=1677819&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java Tue May  5 13:12:18 2015
@@ -271,6 +271,13 @@ public interface IUiOptions
             public String description() { return "Register a service."; } 
         },
 
+        ReservationId { 
+            public String pname()       { return JobRequestProperties.key_id; }
+            public String argname()     { return "string"; }
+            public String description() { return "The id of the reservation"; }
+            public boolean required()   { return true; }
+        },    
+        
         ServicePingArguments { 
             public String pname()       { return "service_ping_arguments"; }
             public String argname()     { return "string"; }