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/02/28 22:29:54 UTC
svn commit: r1294843 -
/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
Author: markrmiller
Date: Tue Feb 28 21:29:54 2012
New Revision: 1294843
URL: http://svn.apache.org/viewvc?rev=1294843&view=rev
Log:
parallelize
Modified:
lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1294843&r1=1294842&r2=1294843&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Tue Feb 28 21:29:54 2012
@@ -30,8 +30,6 @@ import org.apache.lucene.index.Directory
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.IOUtils;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
-import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
@@ -53,6 +51,10 @@ import org.apache.solr.core.CoreDescript
import org.apache.solr.core.DirectoryFactory;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.RequestHandlerBase;
+import org.apache.solr.handler.component.ShardHandler;
+import org.apache.solr.handler.component.ShardHandlerFactory;
+import org.apache.solr.handler.component.ShardRequest;
+import org.apache.solr.handler.component.ShardResponse;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -73,6 +75,8 @@ import org.slf4j.LoggerFactory;
public class CoreAdminHandler extends RequestHandlerBase {
protected static Logger log = LoggerFactory.getLogger(CoreAdminHandler.class);
protected final CoreContainer coreContainer;
+ private ShardHandlerFactory shardHandlerFactory;
+ private ShardHandler shardHandler;
public CoreAdminHandler() {
super();
@@ -89,6 +93,8 @@ public class CoreAdminHandler extends Re
*/
public CoreAdminHandler(final CoreContainer coreContainer) {
this.coreContainer = coreContainer;
+ shardHandlerFactory = coreContainer.getShardHandlerFactory();
+ shardHandler = shardHandlerFactory.getShardHandler();
}
@@ -754,6 +760,9 @@ public class CoreAdminHandler extends Re
String collection = required.get("collection");
+ newParams.set(CoreAdminParams.ACTION, subAction);
+
+
SolrCore core = req.getCore();
ZkController zkController = core.getCoreDescriptor().getCoreContainer()
.getZkController();
@@ -767,26 +776,30 @@ public class CoreAdminHandler extends Re
for (Map.Entry<String,ZkNodeProps> shardEntry : shardEntries) {
final ZkNodeProps node = shardEntry.getValue();
if (cloudState.liveNodesContain(node.get(ZkStateReader.NODE_NAME_PROP))) {
- CommonsHttpSolrServer server = new CommonsHttpSolrServer(node.get(ZkStateReader.BASE_URL_PROP));
+ newParams.set(CoreAdminParams.CORE, node.get(ZkStateReader.CORE_NAME_PROP));
+ String replica = node.get(ZkStateReader.BASE_URL_PROP) + "/admin/cores";
+ ShardRequest sreq = new ShardRequest();
+ sreq.purpose = 1;
+ // TODO: this sucks
+ if (replica.startsWith("http://"))
+ replica = replica.substring(7);
+ sreq.shards = new String[]{replica};
+ sreq.actualShards = sreq.shards;
+ sreq.params = newParams;
- server.request(new CoreAdminRequest() {
- {
- action = CoreAdminAction.valueOf(subAction);
- setCoreName(node.get(ZkStateReader.CORE_NAME_PROP));
- }
-
- @Override
- public SolrParams getParams() {
- SolrParams superParams = super.getParams();
- newParams.add(superParams);
- return newParams;
- }
- });
+ shardHandler.submit(sreq, replica, sreq.params);
}
}
}
-
+ ShardResponse srsp;
+ do {
+ srsp = shardHandler.takeCompletedOrError();
+ Throwable e = srsp.getException();
+ if (e != null) {
+ log.error("Error talking to shard: " + srsp.getShard(), e);
+ }
+ } while(srsp != null);
}