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 2014/03/08 05:38:20 UTC
svn commit: r1575476 - in /lucene/dev/trunk/solr: CHANGES.txt
core/src/java/org/apache/solr/cloud/Overseer.java
Author: markrmiller
Date: Sat Mar 8 04:38:20 2014
New Revision: 1575476
URL: http://svn.apache.org/r1575476
Log:
SOLR-5834: Overseer threads are only being interrupted and not closed.
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/Overseer.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1575476&r1=1575475&r2=1575476&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Sat Mar 8 04:38:20 2014
@@ -138,6 +138,9 @@ Bug Fixes
* SOLR-5818: distrib search with custom comparator does not quite work correctly
(Ryan Ernst)
+* SOLR-5834: Overseer threads are only being interrupted and not closed.
+ (hossman, Mark Miller)
+
Optimizations
----------------------
* SOLR-1880: Distributed Search skips GET_FIELDS stage if EXECUTE_QUERY
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/Overseer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/Overseer.java?rev=1575476&r1=1575475&r2=1575476&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/Overseer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/Overseer.java Sat Mar 8 04:38:20 2014
@@ -81,8 +81,8 @@ public class Overseer {
//Internal queue where overseer stores events that have not yet been published into cloudstate
//If Overseer dies while extracting the main queue a new overseer will start from this queue
private final DistributedQueue workQueue;
- private volatile boolean isClosed;
private Map clusterProps;
+ private boolean isClosed = false;
public ClusterStateUpdater(final ZkStateReader reader, final String myId) {
this.zkClient = reader.getZkClient();
@@ -1030,20 +1030,22 @@ public class Overseer {
class OverseerThread extends Thread implements ClosableThread {
- private volatile boolean isClosed;
+ protected volatile boolean isClosed;
+ private ClosableThread thread;
- public OverseerThread(ThreadGroup tg,
- ClusterStateUpdater clusterStateUpdater) {
- super(tg, clusterStateUpdater);
+ public OverseerThread(ThreadGroup tg, ClosableThread thread) {
+ super(tg, (Runnable) thread);
+ this.thread = thread;
}
- public OverseerThread(ThreadGroup ccTg,
- OverseerCollectionProcessor overseerCollectionProcessor, String string) {
- super(ccTg, overseerCollectionProcessor, string);
+ public OverseerThread(ThreadGroup ccTg, ClosableThread thread, String name) {
+ super(ccTg, (Runnable) thread, name);
+ this.thread = thread;
}
@Override
public void close() {
+ thread.close();
this.isClosed = true;
}
@@ -1084,8 +1086,7 @@ public class Overseer {
ThreadGroup ccTg = new ThreadGroup("Overseer collection creation process.");
ocp = new OverseerCollectionProcessor(reader, id, shardHandler, adminPath);
- ccThread = new OverseerThread(ccTg, ocp,
- "Overseer-" + id);
+ ccThread = new OverseerThread(ccTg, ocp, "Overseer-" + id);
ccThread.setDaemon(true);
updaterThread.start();