mirror of https://github.com/apache/lucene.git
SOLR-5608: Don't allow a closed SolrCore to publish state to ZooKeeper.
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1555659 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
50e277c1ef
commit
5dfb49986e
|
@ -341,6 +341,9 @@ Bug Fixes
|
|||
* SOLR-5564: hl.maxAlternateFieldLength should apply to original field when
|
||||
fallback is attempted (janhoy)
|
||||
|
||||
* SOLR-5608: Don't allow a closed SolrCore to publish state to ZooKeeper.
|
||||
(Mark Miller, Shawn Heisey)
|
||||
|
||||
Optimizations
|
||||
----------------------
|
||||
|
||||
|
|
|
@ -982,10 +982,27 @@ public final class ZkController {
|
|||
publish(cd, state, true);
|
||||
}
|
||||
|
||||
public void publish(final CoreDescriptor cd, final String state, boolean updateLastState) throws KeeperException, InterruptedException {
|
||||
publish(cd, state, true, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Publish core state to overseer.
|
||||
*/
|
||||
public void publish(final CoreDescriptor cd, final String state, boolean updateLastState) throws KeeperException, InterruptedException {
|
||||
public void publish(final CoreDescriptor cd, final String state, boolean updateLastState, boolean forcePublish) throws KeeperException, InterruptedException {
|
||||
if (!forcePublish) {
|
||||
SolrCore core = cc.getCore(cd.getName());
|
||||
if (core == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (core.isClosed()) {
|
||||
return;
|
||||
}
|
||||
} finally {
|
||||
core.close();
|
||||
}
|
||||
}
|
||||
log.info("publishing core={} state={}", cd.getName(), state);
|
||||
//System.out.println(Thread.currentThread().getStackTrace()[3]);
|
||||
Integer numShards = cd.getCloudDescriptor().getNumShards();
|
||||
|
@ -1341,7 +1358,7 @@ public final class ZkController {
|
|||
cloudDesc.setCoreNodeName(coreNodeName);
|
||||
}
|
||||
|
||||
publish(cd, ZkStateReader.DOWN, false);
|
||||
publish(cd, ZkStateReader.DOWN, false, true);
|
||||
} catch (KeeperException e) {
|
||||
log.error("", e);
|
||||
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
|
||||
|
|
Loading…
Reference in New Issue