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);
     
   }