mirror of https://github.com/apache/lucene.git
SOLR-6603: LBHttpSolrServer - lazily allocate skipped-zombie-servers list. (This closes #97)
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1630285 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d51eef911f
commit
d5191d5674
|
@ -214,6 +214,12 @@ Bug Fixes
|
||||||
* SOLR-6545: Query field list with wild card on dynamic field fails.
|
* SOLR-6545: Query field list with wild card on dynamic field fails.
|
||||||
(Burke Webster, Xu Zhang, shalin)
|
(Burke Webster, Xu Zhang, shalin)
|
||||||
|
|
||||||
|
Optimizations
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
* SOLR-6603: LBHttpSolrServer - lazily allocate skipped-zombie-servers list.
|
||||||
|
(Christine Poerschke via shalin)
|
||||||
|
|
||||||
Other Changes
|
Other Changes
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
|
|
@ -286,7 +286,7 @@ public class LBHttpSolrServer extends SolrServer {
|
||||||
Rsp rsp = new Rsp();
|
Rsp rsp = new Rsp();
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
boolean isUpdate = req.request instanceof IsUpdateRequest;
|
boolean isUpdate = req.request instanceof IsUpdateRequest;
|
||||||
List<ServerWrapper> skipped = new ArrayList<>(req.getNumDeadServersToTry());
|
List<ServerWrapper> skipped = null;
|
||||||
|
|
||||||
for (String serverStr : req.getServers()) {
|
for (String serverStr : req.getServers()) {
|
||||||
serverStr = normalize(serverStr);
|
serverStr = normalize(serverStr);
|
||||||
|
@ -294,8 +294,16 @@ public class LBHttpSolrServer extends SolrServer {
|
||||||
ServerWrapper wrapper = zombieServers.get(serverStr);
|
ServerWrapper wrapper = zombieServers.get(serverStr);
|
||||||
if (wrapper != null) {
|
if (wrapper != null) {
|
||||||
// System.out.println("ZOMBIE SERVER QUERIED: " + serverStr);
|
// System.out.println("ZOMBIE SERVER QUERIED: " + serverStr);
|
||||||
if (skipped.size() < req.getNumDeadServersToTry())
|
final int numDeadServersToTry = req.getNumDeadServersToTry();
|
||||||
skipped.add(wrapper);
|
if (numDeadServersToTry > 0) {
|
||||||
|
if (skipped == null) {
|
||||||
|
skipped = new ArrayList<>(numDeadServersToTry);
|
||||||
|
skipped.add(wrapper);
|
||||||
|
}
|
||||||
|
else if (skipped.size() < numDeadServersToTry) {
|
||||||
|
skipped.add(wrapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
rsp.server = serverStr;
|
rsp.server = serverStr;
|
||||||
|
@ -308,10 +316,12 @@ public class LBHttpSolrServer extends SolrServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
// try the servers we previously skipped
|
// try the servers we previously skipped
|
||||||
for (ServerWrapper wrapper : skipped) {
|
if (skipped != null) {
|
||||||
ex = doRequest(wrapper.solrServer, req, rsp, isUpdate, true, wrapper.getKey());
|
for (ServerWrapper wrapper : skipped) {
|
||||||
if (ex == null) {
|
ex = doRequest(wrapper.solrServer, req, rsp, isUpdate, true, wrapper.getKey());
|
||||||
return rsp; // SUCCESS
|
if (ex == null) {
|
||||||
|
return rsp; // SUCCESS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue