You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2012/08/30 16:16:16 UTC
svn commit: r1378948 -
/lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
Author: markrmiller
Date: Thu Aug 30 14:16:15 2012
New Revision: 1378948
URL: http://svn.apache.org/viewvc?rev=1378948&view=rev
Log:
work harder to shutdown jetty for cases where jetty was started but could not bind to the port - not perfect yet, but works better than a std stop
Modified:
lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java?rev=1378948&r1=1378947&r2=1378948&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java Thu Aug 30 14:16:15 2012
@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.Random;
import javax.servlet.DispatcherType;
+import javax.servlet.Filter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -40,6 +41,7 @@ import org.eclipse.jetty.servlet.Servlet
import org.eclipse.jetty.util.component.LifeCycle;
import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
+import org.eclipse.jetty.util.thread.ThreadPool;
/**
* Run solr using jetty
@@ -47,8 +49,6 @@ import org.eclipse.jetty.util.thread.Que
* @since solr 1.3
*/
public class JettySolrRunner {
- static Map<JettySolrRunner,Exception> RUNNING_JETTIES = new HashMap<JettySolrRunner,Exception>();
-
Server server;
FilterHolder dispatchFilter;
@@ -208,7 +208,6 @@ public class JettySolrRunner {
if (!server.isRunning()) {
server.start();
- RUNNING_JETTIES.put(this, new RuntimeException());
}
synchronized (JettySolrRunner.this) {
int cnt = 0;
@@ -225,20 +224,31 @@ public class JettySolrRunner {
}
public void stop() throws Exception {
- if (!server.isStopped() && !server.isStopping()) {
- server.stop();
- RUNNING_JETTIES.remove(this);
+ // we try and do a bunch of extra stop stuff because
+ // jetty doesn't like to stop if it started
+ // and ended up in a failure state (like when it cannot get the port)
+ if (server.getState().equals(Server.FAILED)) {
+ Connector[] connectors = server.getConnectors();
+ for (Connector connector : connectors) {
+ connector.stop();
+ }
}
- server.join();
- }
-
- public static void assertStoppedJetties() {
- if (RUNNING_JETTIES.size() > 0) {
- Iterator<Exception> stacktraces = RUNNING_JETTIES.values().iterator();
- Exception cause = null;
- cause = stacktraces.next();
- throw new RuntimeException("Found a bad one!", cause);
+ Filter filter = dispatchFilter.getFilter();
+ ThreadPool threadPool = server.getThreadPool();
+ server.getServer().stop();
+ server.stop();
+ if (threadPool instanceof QueuedThreadPool) {
+ ((QueuedThreadPool) threadPool).setMaxStopTimeMs(15000);
+ ((QueuedThreadPool) threadPool).stop();
+ ((QueuedThreadPool) threadPool).stop();
+ ((QueuedThreadPool) threadPool).stop();
+ }
+ //server.destroy();
+ if (server.getState().equals(Server.FAILED)) {
+ filter.destroy();
}
+
+ server.join();
}
/**