You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2019/03/22 21:27:28 UTC
svn commit: r1856080 - in /uima/uima-ducc/trunk:
uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/
uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/
uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/
Author: cwiklik
Date: Fri Mar 22 21:27:28 2019
New Revision: 1856080
URL: http://svn.apache.org/viewvc?rev=1856080&view=rev
Log:
UIMA-6015 moved uima version detection to DuccJobSubmit
Modified:
uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/DuccCommandExecutor.java
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/DefaultServiceProtocolHandler.java
Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/DuccCommandExecutor.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/DuccCommandExecutor.java?rev=1856080&r1=1856079&r2=1856080&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/DuccCommandExecutor.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/DuccCommandExecutor.java Fri Mar 22 21:27:28 2019
@@ -813,7 +813,7 @@ public class DuccCommandExecutor extends
String duccHomePath = Utils.findDuccHome();
-
+ /*
String[] jars = classpath.split(":");
URLClassLoader clsLoader = newClassLoader(jars);
Class<?> cls = clsLoader.loadClass("org.apache.uima.impl.UimaVersion");
@@ -837,7 +837,7 @@ public class DuccCommandExecutor extends
} else {
((JavaCommandLine) cmdLine).setClasspath(classpath);
}
-
+ */
cmdLine.addOption("-DDUCC_HOME=" + duccHomePath);
cmdLine.addOption("-Dducc.deploy.configuration="
+ System.getProperty("ducc.deploy.configuration"));
Modified: uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java?rev=1856080&r1=1856079&r2=1856080&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java Fri Mar 22 21:27:28 2019
@@ -18,13 +18,20 @@
*/
package org.apache.uima.ducc.cli;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Map.Entry;
import java.util.Properties;
import org.apache.uima.ducc.cli.aio.AllInOneLauncher;
+import org.apache.uima.ducc.common.exception.DuccRuntimeException;
import org.apache.uima.ducc.common.utils.DuccSchedulerClasses;
import org.apache.uima.ducc.common.utils.IllegalConfigurationException;
+import org.apache.uima.ducc.common.utils.Utils;
import org.apache.uima.ducc.transport.event.IDuccContext.DuccContext;
import org.apache.uima.ducc.transport.event.SubmitJobDuccEvent;
import org.apache.uima.ducc.transport.event.SubmitJobReplyDuccEvent;
@@ -320,8 +327,54 @@ public class DuccJobSubmit
}
}
-
+ private URLClassLoader newClassLoader(String[] classPathElements) throws IOException {
+ ArrayList<URL> urlList = new ArrayList<URL>(classPathElements.length);
+ for (String element : classPathElements) {
+ if (element.endsWith("*")) {
+ File dir = new File(element.substring(0, element.length() - 1));
+ File[] files = dir.listFiles(); // Will be null if missing or not a dir
+ if (files != null) {
+ for (File f : files) {
+ if (f.getName().endsWith(".jar")) {
+ urlList.add(f.getCanonicalFile().toURI().toURL());
+ }
+ }
+ }
+ } else {
+ File f = new File(element);
+ if (f.exists()) {
+ urlList.add(f.getCanonicalFile().toURI().toURL());
+ }
+ }
+ }
+ URL[] urls = new URL[urlList.size()];
+ return new URLClassLoader(urlList.toArray(urls), ClassLoader.getSystemClassLoader().getParent());
+ }
//**********
+ private void modifyClasspathBasedOnUimaVersion(String classpathKey) throws Exception {
+ String duccHomePath = Utils.findDuccHome();
+
+ String classpath = jobRequestProperties.getProperty(classpathKey);
+ String[] jars = classpath.split(":");
+ URLClassLoader clsLoader = newClassLoader(jars);
+ Class<?> cls = clsLoader.loadClass("org.apache.uima.impl.UimaVersion");
+ Method majorVersionMethod = cls.getMethod("getMajorVersion");
+ short majorVersion = (short)majorVersionMethod.invoke(null);
+
+
+ if ( !duccHomePath.trim().endsWith("/") ) {
+ duccHomePath = duccHomePath.concat("/");
+ }
+ String workItemJarDir = duccHomePath+"lib/uima-ducc/workitem/uima-ducc-workitem-";
+ if ( majorVersion < 3 ) {
+ classpath = workItemJarDir+"v2.jar:"+classpath;
+ } else if ( majorVersion >= 3 ) {
+ classpath = workItemJarDir+"v3.jar:"+classpath;
+ } else {
+ throw new DuccRuntimeException("Unknown version of UIMA - majorVersion="+majorVersion);
+ }
+ jobRequestProperties.setProperty(classpathKey,classpath);
+ }
/**
* Execute collects the job parameters, does basic error and correctness checking, and sends
@@ -355,7 +408,10 @@ public class DuccJobSubmit
if (!jobRequestProperties.containsKey(key_cp)) {
jobRequestProperties.setProperty(key_cp, System.getProperty("java.class.path"));
}
-
+ // using user classpath determine which uima version is being used and
+ // add to the front a corresponding version of uima-ducc-workitem-v<N>.jar
+ modifyClasspathBasedOnUimaVersion(key_cp);
+
if (jobRequestProperties.containsKey(UiOption.Debug.pname())) {
jobRequestProperties.dump();
}
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/DefaultServiceProtocolHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/DefaultServiceProtocolHandler.java?rev=1856080&r1=1856079&r2=1856080&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/DefaultServiceProtocolHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/DefaultServiceProtocolHandler.java Fri Mar 22 21:27:28 2019
@@ -20,6 +20,8 @@ package org.apache.uima.ducc.ps.service.
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
@@ -107,9 +109,10 @@ public class DefaultServiceProtocolHandl
} catch (Throwable e) {
initError = true;
running = false;
+ e.printStackTrace();
logger.log(Level.WARNING, "ProtocolHandler initialize() failed -",e);
throw new ServiceInitializationException(
- "Thread:" + Thread.currentThread().getName() + " Failed initialization");
+ "Thread:" + Thread.currentThread().getName() + " Failed initialization - "+ e);
} finally {
initLatch.countDown();