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 2013/02/06 20:33:15 UTC
svn commit: r1443156 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws:
./ server/
Author: degenaro
Date: Wed Feb 6 19:33:14 2013
New Revision: 1443156
URL: http://svn.apache.org/viewvc?rev=1443156&view=rev
Log:
UIMA-2642 Support
1. proxy-job-status
2. proxy-job-monitor
3. WS auto-cancel after expiry
4. WaitTimeout and CancelPending... in Reason area of Jobs page
5. several utility functions
Added:
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IListenerOrchestrator.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccFile.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/TrackingInfo.java
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java
uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IListenerOrchestrator.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IListenerOrchestrator.java?rev=1443156&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IListenerOrchestrator.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IListenerOrchestrator.java Wed Feb 6 19:33:14 2013
@@ -0,0 +1,7 @@
+package org.apache.uima.ducc.ws;
+
+import org.apache.uima.ducc.transport.event.OrchestratorStateDuccEvent;
+
+public interface IListenerOrchestrator {
+ public void update(OrchestratorStateDuccEvent duccEvent);
+}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java?rev=1443156&r1=1443155&r2=1443156&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java Wed Feb 6 19:33:14 2013
@@ -36,6 +36,7 @@ import org.apache.uima.ducc.transport.ev
import org.apache.uima.ducc.transport.event.RmStateDuccEvent;
import org.apache.uima.ducc.transport.event.SmStateDuccEvent;
import org.apache.uima.ducc.transport.event.common.DuccWorkMap;
+import org.apache.uima.ducc.ws.server.DuccListeners;
import org.apache.uima.ducc.ws.server.DuccWebServer;
import org.apache.uima.ducc.ws.utils.DatedNodeMetricsUpdateDuccEvent;
@@ -127,6 +128,7 @@ implements IWebServer {
duccLogger.info(methodName, jobid, duccMsg.fetchLabel("jobs")+jobCount.get()+" "+duccMsg.fetchLabel("reservations")+reservationCount.get()+" "+duccMsg.fetchLabel("services")+serviceCount.get());
}
DuccData.getInstance().put(wm);
+ DuccListeners.getInstance().update(duccEvent);
duccLogger.trace(methodName, jobid, duccMsg.fetch("exit"));
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java?rev=1443156&r1=1443155&r2=1443156&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java Wed Feb 6 19:33:14 2013
@@ -63,6 +63,7 @@ public abstract class DuccAbstractHandle
public final String duccContextJsonFormat = duccContext+"/json-format";
public final String duccContextUser = duccContext+"/user";
public final String duccContextLegacy = duccContext+"/legacy";
+ public final String duccContextProxy = duccContext+"/proxy";
public final String duccjConsoleLink = duccContext+"/jconsole-link.jnlp";
@@ -662,14 +663,6 @@ public abstract class DuccAbstractHandle
return disabled;
}
- public String getUserLogsDir(IDuccWorkJob job) {
- String retVal = job.getLogDirectory();
- if(!retVal.endsWith(File.separator)) {
- retVal += File.separator;
- }
- return retVal;
- }
-
public String buildjConsoleLink(String service) {
String location = "buildjConsoleLink";
String href = "<a href=\""+duccjConsoleLink+"?"+"service="+service+"\" onclick=\"var newWin = window.open(this.href,'child','height=800,width=1200,scrollbars'); newWin.focus(); return false;\">"+service+"</a>";
@@ -688,7 +681,7 @@ public abstract class DuccAbstractHandle
if(name == null) {
name = errorCount;
}
- String logsjobdir = getUserLogsDir(job)+job.getDuccId().getFriendly()+File.separator;
+ String logsjobdir = job.getUserLogsDir()+job.getDuccId().getFriendly()+File.separator;
String logfile = "jd.err.log";
String href = "<a href=\""+duccLogData+"?"+"fname="+logsjobdir+logfile+"\" onclick=\"var newWin = window.open(this.href,'child','height=800,width=1200,scrollbars'); newWin.focus(); return false;\">"+name+"</a>";
retVal = href;
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccFile.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccFile.java?rev=1443156&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccFile.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccFile.java Wed Feb 6 19:33:14 2013
@@ -0,0 +1,60 @@
+/*
+ * 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.ws.server;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.uima.ducc.common.IDuccEnv;
+import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
+
+public class DuccFile {
+
+ public static Properties getProperties(IDuccWorkJob job) throws IOException {
+ String directory = job.getUserLogsDir()+job.getDuccId().getFriendly()+File.separator;
+ String name = "job-specification.properties";
+ Properties properties = DuccFile.getProperties(directory, name);
+ return properties;
+ }
+
+ public static Properties getProperties(String directory, String name) throws IOException {
+ return getProperties(directory+name);
+ }
+
+ public static Properties getProperties(String path) throws IOException {
+ FileInputStream fis = null;
+ try {
+ File file = new File(path);
+ fis = new FileInputStream(file);
+ Properties properties = new Properties();
+ properties.load(fis);
+ fis.close();
+ return properties;
+ }
+ catch(IOException e) {
+ if(fis != null) {
+ fis.close();
+ }
+ throw e;
+ }
+ }
+}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1443156&r1=1443155&r2=1443156&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Wed Feb 6 19:33:14 2013
@@ -302,7 +302,7 @@ public class DuccHandler extends DuccAbs
}
private void buildJobProcessListEntry(StringBuffer sb, DuccWorkJob job, IDuccProcess process, String type, int counter) {
- String logsjobdir = getUserLogsDir(job)+job.getDuccId().getFriendly()+File.separator;
+ String logsjobdir = job.getUserLogsDir()+job.getDuccId().getFriendly()+File.separator;
String logfile = buildLogFileName(job, process, type);
String errfile = "jd.err.log";
String href = "<a href=\""+duccLogData+"?"+"fname="+logsjobdir+logfile+"\" onclick=\"var newWin = window.open(this.href,'child','height=800,width=1200,scrollbars'); newWin.focus(); return false;\">"+logfile+"</a>";
@@ -1126,13 +1126,7 @@ public class DuccHandler extends DuccAbs
DuccWorkJob job = getJob(jobNo);
if(job != null) {
try {
- String logsjobdir = getUserLogsDir(job)+job.getDuccId().getFriendly()+File.separator;
- String specfile = "job-specification.properties";
- File file = new File(logsjobdir+specfile);
- FileInputStream fis = new FileInputStream(file);
- Properties properties = new Properties();
- properties.load(fis);
- fis.close();
+ Properties properties = DuccFile.getProperties(job);
TreeMap<String,String> map = new TreeMap<String,String>();
Enumeration<?> enumeration = properties.keys();
while(enumeration.hasMoreElements()) {
@@ -1200,7 +1194,7 @@ public class DuccHandler extends DuccAbs
data.append("<td>");
DuccId processId = processIterator.next();
IDuccProcess process = processMap.get(processId);
- String logsjobdir = getUserLogsDir(job)+job.getDuccId().getFriendly()+File.separator;
+ String logsjobdir = job.getUserLogsDir()+job.getDuccId().getFriendly()+File.separator;
String logfile = buildLogFileName(job, process, "UIMA");
String link = logfile;
String reason = process.getReasonForStoppingProcess();
@@ -1248,7 +1242,7 @@ public class DuccHandler extends DuccAbs
data.append("<td>");
DuccId processId = processIterator.next();
IDuccProcess process = processMap.get(processId);
- String logsjobdir = getUserLogsDir(job)+job.getDuccId().getFriendly()+File.separator;
+ String logsjobdir = job.getUserLogsDir()+job.getDuccId().getFriendly()+File.separator;
String logfile = buildLogFileName(job, process, "UIMA");
String link = logfile;
String reason = process.getReasonForStoppingProcess();
@@ -1273,7 +1267,7 @@ public class DuccHandler extends DuccAbs
}
private void buildServiceProcessListEntry(StringBuffer sb, DuccWorkJob job, IDuccProcess process, String type, int counter) {
- String logsjobdir = getUserLogsDir(job)+job.getDuccId().getFriendly()+File.separator;
+ String logsjobdir = job.getUserLogsDir()+job.getDuccId().getFriendly()+File.separator;
String logfile = buildLogFileName(job, process, type);
String href = "<a href=\""+duccLogData+"?"+"fname="+logsjobdir+logfile+"\" onclick=\"var newWin = window.open(this.href,'child','height=800,width=1200,scrollbars'); newWin.focus(); return false;\">"+logfile+"</a>";
sb.append(trGet(counter));
@@ -1417,7 +1411,7 @@ public class DuccHandler extends DuccAbs
DuccWorkJob service = getService(jobNo);
if(service != null) {
try {
- String logsjobdir = getUserLogsDir(service)+service.getDuccId().getFriendly()+File.separator;
+ String logsjobdir = service.getUserLogsDir()+service.getDuccId().getFriendly()+File.separator;
String specfile = "service-specification.properties";
File file = new File(logsjobdir+specfile);
FileInputStream fis = new FileInputStream(file);
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1443156&r1=1443155&r2=1443156&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Wed Feb 6 19:33:14 2013
@@ -146,6 +146,7 @@ public class DuccHandlerJsonFormat exten
// Reason
sb = new StringBuffer();
if(job.isOperational()) {
+ boolean multi = false;
sb.append("<span>");
ArrayList<String> swappingMachines = getSwappingMachines(job);
if(!swappingMachines.isEmpty()) {
@@ -155,11 +156,60 @@ public class DuccHandlerJsonFormat exten
mb.append(" ");
}
String ml = mb.toString().trim();
+ if(multi) {
+ sb.append(" ");
+ }
+ multi = true;
sb.append("<span class=\"health_red\" title=\""+ml+"\">");
sb.append("Swapping");
sb.append("</span>");
}
sb.append("</span>");
+ DuccWebMonitor duccWebMonitor = DuccWebMonitor.getInstance();
+ Long expiry = duccWebMonitor.getExpiry(duccId);
+ if(expiry != null) {
+ if(multi) {
+ sb.append(" ");
+ }
+ multi = true;
+ String t2 = " left until auto-cancel, unless renewed";
+ String t1;
+ if(expiry == 0) {
+ t1 = "less than 1 minute";
+ }
+ else {
+ t1 = expiry+"+ minutes";
+ }
+ String text = t1+t2;
+ long expiryWarnTime = 3;
+ Properties properties = DuccWebProperties.get();
+ String key = "ducc.ws.job.automatic.cancel.minutes";
+ if(properties.containsKey(key)) {
+ String value = properties.getProperty(key);
+ try {
+ long time = Long.parseLong(value)/2;
+ if(time > 0) {
+ expiryWarnTime = time;
+ }
+ }
+ catch(Exception e) {
+
+ }
+ }
+ if(expiry > expiryWarnTime) {
+ sb.append("<span class=\"health_green\" title=\""+text+"\">");
+ }
+ else {
+ sb.append("<span class=\"health_red\" title=\""+text+"\">");
+ }
+ sb.append("WaitTimeout");
+ sb.append("</span>");
+ }
+ else if(duccWebMonitor.isCancelPending(duccId)) {
+ sb.append("<span class=\"health_red\" >");
+ sb.append("CancelPending...");
+ sb.append("</span>");
+ }
}
else if(job.isCompleted()) {
JobCompletionType jobCompletionType = job.getCompletionType();
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java?rev=1443156&r1=1443155&r2=1443156&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java Wed Feb 6 19:33:14 2013
@@ -155,6 +155,7 @@ public class DuccHandlerLegacy extends D
sb.append("</td>");
// Reason
if(job.isOperational()) {
+ boolean multi = false;
sb.append("<td valign=\"bottom\">");
ArrayList<String> swappingMachines = getSwappingMachines(job);
if(!swappingMachines.isEmpty()) {
@@ -164,10 +165,59 @@ public class DuccHandlerLegacy extends D
mb.append(" ");
}
String ml = mb.toString().trim();
+ if(multi) {
+ sb.append(" ");
+ }
+ multi = true;
sb.append("<span class=\"health_red\" title=\""+ml+"\">");
sb.append("Swapping");
sb.append("</span>");
}
+ DuccWebMonitor duccWebMonitor = DuccWebMonitor.getInstance();
+ Long expiry = duccWebMonitor.getExpiry(duccId);
+ if(expiry != null) {
+ if(multi) {
+ sb.append(" ");
+ }
+ multi = true;
+ String t2 = " left until auto-cancel, unless renewed";
+ String t1;
+ if(expiry == 0) {
+ t1 = "less than 1 minute";
+ }
+ else {
+ t1 = expiry+"+ minutes";
+ }
+ String text = t1+t2;
+ long expiryWarnTime = 3;
+ Properties properties = DuccWebProperties.get();
+ String key = "ducc.ws.job.automatic.cancel.minutes";
+ if(properties.containsKey(key)) {
+ String value = properties.getProperty(key);
+ try {
+ long time = Long.parseLong(value)/2;
+ if(time > 0) {
+ expiryWarnTime = time;
+ }
+ }
+ catch(Exception e) {
+
+ }
+ }
+ if(expiry > expiryWarnTime) {
+ sb.append("<span class=\"health_green\" title=\""+text+"\">");
+ }
+ else {
+ sb.append("<span class=\"health_red\" title=\""+text+"\">");
+ }
+ sb.append("WaitTimeout");
+ sb.append("</span>");
+ }
+ else if(duccWebMonitor.isCancelPending(duccId)) {
+ sb.append("<span class=\"health_red\" >");
+ sb.append("CancelPending...");
+ sb.append("</span>");
+ }
sb.append("</td>");
}
else if(job.isCompleted()) {
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java?rev=1443156&r1=1443155&r2=1443156&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java Wed Feb 6 19:33:14 2013
@@ -183,9 +183,10 @@ public class DuccWebServer {
DuccHandler duccHandler = new DuccHandler(this);
DuccHandlerLegacy duccHandlerLegacy = new DuccHandlerLegacy(this);
DuccHandlerJsonFormat duccHandlerJson = new DuccHandlerJsonFormat();
+ DuccHandlerProxy duccHandlerProxy = new DuccHandlerProxy();
DuccHandlerUserAuthentication duccHandlerUserAuthentication = new DuccHandlerUserAuthentication();
SessionHandler sessionHandler = new SessionHandler();
- handlers.setHandlers(new Handler[] { sessionHandler, duccHandlerUserAuthentication, duccHandlerJson, duccHandlerLegacy, duccHandler, jspHandler, resourceHandler, new DefaultHandler() });
+ handlers.setHandlers(new Handler[] { sessionHandler, duccHandlerUserAuthentication, duccHandlerJson, duccHandlerProxy, duccHandlerLegacy, duccHandler, jspHandler, resourceHandler, new DefaultHandler() });
server.setHandler(handlers);
logger.trace(methodName, null, messages.fetch("exit"));
}
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/TrackingInfo.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/TrackingInfo.java?rev=1443156&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/TrackingInfo.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/TrackingInfo.java Wed Feb 6 19:33:14 2013
@@ -0,0 +1,25 @@
+/*
+ * 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.ws.server;
+
+public class TrackingInfo {
+ public long time;
+ public String user;
+}