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/05/21 15:43:07 UTC
svn commit: r1859656 - in /uima/uima-ducc/trunk/uima-ducc-pullservice/src:
main/java/org/apache/uima/ducc/ps/service/main/
main/java/org/apache/uima/ducc/ps/service/protocol/builtin/
test/java/org/apache/uima/ducc/ps/ test/java/org/apache/uima/ducc/ps/...
Author: cwiklik
Date: Tue May 21 15:43:07 2019
New Revision: 1859656
URL: http://svn.apache.org/viewvc?rev=1859656&view=rev
Log:
UIMA-6046 modified to prevent a hang
Modified:
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/PullService.java
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/protocol/builtin/DefaultServiceProtocolHandler.java
uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/Client.java
uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/service/JunitPullServiceTestCase.java
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/PullService.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/PullService.java?rev=1859656&r1=1859655&r2=1859656&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/PullService.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/main/PullService.java Tue May 21 15:43:07 2019
@@ -273,14 +273,14 @@ public class PullService implements ISer
threadPool.shutdownNow();
// close connection to remote client and cleanup
stopTransport();
- System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .quiesceAndStop()-transport stopped");
+ System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .stop()-transport stopped");
stopProtocolHandler(false);
- System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .quiesceAndStop()-protocol handler stopped");
+ System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .stop()-protocol handler stopped");
stopServiceProcessor();
System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .stop()-processor stopped");
// monitor should be stopped last to keep posting updates to observer
stopMonitor();
- System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .dtop()-monitor stopped");
+ System.out.println(">>>>>>>> "+Utils.getTimestamp()+" "+Utils.getShortClassname(this.getClass())+" .stop()-monitor stopped");
}
public void quiesceAndStop() {
// when quiescing, let the process threads finish processing
@@ -328,7 +328,6 @@ public class PullService implements ISer
}
private void stopProcessThreadPool() {
-// if (threadPool != null && !threadPool.isShutdown() && !threadPool.isTerminating() && !threadPool.isTerminated()) {
if (threadPool != null ) {
try {
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=1859656&r1=1859655&r2=1859656&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 Tue May 21 15:43:07 2019
@@ -290,7 +290,7 @@ public class DefaultServiceProtocolHandl
// this thread's tasks
if (threadLocalXStream.get().get(Thread.currentThread().getId()) == null) {
threadLocalXStream.get().put(Thread.currentThread().getId(),
- XStreamUtils.getXStreamInstance());// new XStream(new DomDriver()));
+ XStreamUtils.getXStreamInstance());
}
// all threads intialized, enter running state
@@ -444,7 +444,8 @@ public class DefaultServiceProtocolHandl
retryThread.interrupt();
}
} catch (Exception ee) {
- } // noTaskStrategy.interrupt();
+ }
+ waitForWorkerThreadsToComplete();
if (logger.isLoggable(Level.INFO)) {
logger.log(Level.INFO, this.getClass().getName() + " stop() called");
}
@@ -473,19 +474,21 @@ public class DefaultServiceProtocolHandl
}
} catch (Exception ee) {
}
- try {
- // wait for process threads to terminate
- stopLatch.await();
- transport.stop(true);
- } catch (Exception e) {
-
- }
+ waitForWorkerThreadsToComplete();
// Use System.out since the logger's ShutdownHook may have closed streams
System.out.println(Utils.getTimestamp() + ">>>>>>> " + Utils.getShortClassname(this.getClass())
+ ".queisceAndStop() All process threads completed quiesce");
logger.log(Level.INFO, this.getClass().getName() + " All process threads completed quiesce");
}
+ private void waitForWorkerThreadsToComplete() {
+ try {
+ // wait for process threads to terminate
+ stopLatch.await();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
@Override
public void start() {
running = true;
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/Client.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/Client.java?rev=1859656&r1=1859655&r2=1859656&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/Client.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/Client.java Tue May 21 15:43:07 2019
@@ -73,6 +73,8 @@ public class Client {
private int maxThreads = 50;
+ private long howLongToBlock=60000;
+
private volatile boolean print = true;
private static UimaSerializer uimaSerializer = new UimaSerializer();
@@ -129,37 +131,39 @@ public class Client {
return httpPort;
}
+ public void startJetty(boolean block, long howLong2Block) throws Exception {
+ this.block = block;
+ this.howLongToBlock = howLong2Block;
+ QueuedThreadPool threadPool = new QueuedThreadPool();
+ if (maxThreads < threadPool.getMinThreads()) {
+ System.out.println("Invalid value for jetty MaxThreads(" + maxThreads
+ + ") - it should be greater or equal to " + threadPool.getMinThreads()
+ + ". Defaulting to jettyMaxThreads=" + threadPool.getMaxThreads());
+ threadPool.setMaxThreads(threadPool.getMinThreads());
+ } else {
+ threadPool.setMaxThreads(maxThreads);
+ }
+
+ server = new Server(threadPool);
+
+ // Server connector
+ ServerConnector connector = new ServerConnector(server);
+ System.out.println(">>>> Jetty Acceptors:" + connector.getAcceptors());
+
+ connector.setPort(getJettyPort());
+ server.setConnectors(new Connector[] { connector });
+ System.out.println("launching Jetty on Port:" + connector.getPort());
+ ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
+ context.setContextPath("/");
+ server.setHandler(context);
- public void startJetty(boolean block) throws Exception {
- this.block = block;
-
- QueuedThreadPool threadPool = new QueuedThreadPool();
- if (maxThreads < threadPool.getMinThreads()) {
- System.out.println("Invalid value for jetty MaxThreads(" + maxThreads
- + ") - it should be greater or equal to " + threadPool.getMinThreads()
- + ". Defaulting to jettyMaxThreads=" + threadPool.getMaxThreads());
- threadPool.setMaxThreads(threadPool.getMinThreads());
- } else {
- threadPool.setMaxThreads(maxThreads);
- }
-
- server = new Server(threadPool);
+ context.addServlet(new ServletHolder(new TaskHandlerServlet()), "/" + app);
- // Server connector
- ServerConnector connector = new ServerConnector(server);
- System.out.println(">>>> Jetty Acceptors:" + connector.getAcceptors());
-
- connector.setPort(getJettyPort());
- server.setConnectors(new Connector[] { connector });
- System.out.println("launching Jetty on Port:" + connector.getPort());
- ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
- context.setContextPath("/");
- server.setHandler(context);
-
- context.addServlet(new ServletHolder(new TaskHandlerServlet()), "/" + app);
-
- server.start();
- System.out.println("Jetty Started - Waiting for Messages ...");
+ server.start();
+ System.out.println("Jetty Started - Waiting for Messages ...");
+ }
+ public void startJetty(boolean block) throws Exception {
+ startJetty(block, 30000);
}
@After
@@ -244,8 +248,7 @@ public class Client {
String nodeName = request.getHeader("Hostname");
String threadID = request.getHeader("ThreadID");
String pid = request.getHeader("PID");
- // System.out.println( "Sender ID:::Node IP"+nodeIP+" Node Name:"+nodeName+" PID:"+pid+"
- // ThreadID:"+threadID);
+ // System.out.println( "Sender ID:::Node IP"+nodeIP+" Node Name:"+nodeName+" PID:"+pid+" ThreadID:"+threadID);
IMetaTaskTransaction imt = null;
long t1 = System.currentTimeMillis();
@@ -346,8 +349,9 @@ public class Client {
// String body = XStreamUtils.marshall(imt);
String body = localXStream.get().get(Thread.currentThread().getId()).toXML(imt);
if (block) {
+ System.out.println("............. Client Blocking for "+howLongToBlock+" ms - Forcing Timeout");
synchronized (this) {
- this.wait(0);
+ this.wait(howLongToBlock);
}
}
Modified: uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/service/JunitPullServiceTestCase.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/service/JunitPullServiceTestCase.java?rev=1859656&r1=1859655&r2=1859656&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/service/JunitPullServiceTestCase.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pullservice/src/test/java/org/apache/uima/ducc/ps/service/JunitPullServiceTestCase.java Tue May 21 15:43:07 2019
@@ -281,7 +281,7 @@ public class JunitPullServiceTestCase ex
this.cancel();
fTimer.purge();
fTimer.cancel();
- System.out.println("Timmer popped - stopping service");
+ System.out.println("Timer popped - stopping service");
if (quiesce) {
service.quiesceAndStop();
} else {