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 2013/07/10 20:33:58 UTC

svn commit: r1501899 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/core/ solr/core/src/java/org/apache/solr/core/ solr/core/src/java/org/apache/solr/handler/admin/ solr/core/src/java/org/apache/solr/servlet/ solr/core/src/test/org/apache/solr/hand...

Author: markrmiller
Date: Wed Jul 10 18:33:58 2013
New Revision: 1501899

URL: http://svn.apache.org/r1501899
Log:
SOLR-4943: Add a new system wide info admin handler that exposes the system info that could previously only be retrieved using a SolrCore.

Added:
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
      - copied unchanged from r1501898, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/admin/InfoHandlerTest.java
      - copied unchanged from r1501898, lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/admin/InfoHandlerTest.java
Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1501899&r1=1501898&r2=1501899&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Wed Jul 10 18:33:58 2013
@@ -151,6 +151,9 @@ New Features
 
 * SOLR-4991: Register QParserPlugins as SolrInfoMBeans (ehatcher)
 
+* SOLR-4943: Add a new system wide info admin handler that exposes the system info
+  that could previously only be retrieved using a SolrCore. (Mark Miller)
+
 Bug Fixes
 ----------------------
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java?rev=1501899&r1=1501898&r2=1501899&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java Wed Jul 10 18:33:58 2013
@@ -25,6 +25,7 @@ import org.apache.solr.common.cloud.ZooK
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.handler.admin.CollectionsHandler;
 import org.apache.solr.handler.admin.CoreAdminHandler;
+import org.apache.solr.handler.admin.InfoHandler;
 import org.apache.solr.handler.component.HttpShardHandlerFactory;
 import org.apache.solr.handler.component.ShardHandlerFactory;
 import org.apache.solr.logging.LogWatcher;
@@ -41,6 +42,7 @@ import org.slf4j.LoggerFactory;
 import org.w3c.dom.Node;
 
 import javax.xml.xpath.XPathExpressionException;
+
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
@@ -118,6 +120,7 @@ public class CoreContainer
   protected final ConfigSolr cfg;
   protected final SolrResourceLoader loader;
   protected final String solrHome;
+  private InfoHandler infoHandler;
   
   {
     log.info("New CoreContainer " + System.identityHashCode(this));
@@ -269,6 +272,7 @@ public class CoreContainer
     }
     
     collectionsHandler = new CollectionsHandler(this);
+    infoHandler = new InfoHandler(this);
     containerProperties = cfg.getSolrProperties("solr");
 
     // setup executor to load cores in parallel
@@ -959,6 +963,10 @@ public class CoreContainer
     return collectionsHandler;
   }
   
+  public InfoHandler getInfoHandler() {
+    return infoHandler;
+  }
+  
   /**
    * the default core name, or null if there is no default core name
    */

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java?rev=1501899&r1=1501898&r2=1501899&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java Wed Jul 10 18:33:58 2013
@@ -27,6 +27,7 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.logging.LogWatcher;
@@ -44,12 +45,22 @@ import org.slf4j.LoggerFactory;
  */
 public class LoggingHandler extends RequestHandlerBase implements SolrCoreAware {
   static final org.slf4j.Logger log = LoggerFactory.getLogger(LoggingHandler.class);
+
+  private LogWatcher watcher;
+  
+  public LoggingHandler(CoreContainer cc) {
+    this.watcher = cc.getLogging();
+  }
   
-  LogWatcher watcher = null;
+  public LoggingHandler() {
+    
+  }
   
   @Override
   public void inform(SolrCore core) {
-    watcher = core.getCoreDescriptor().getCoreContainer().getLogging();
+    if (watcher == null) {
+      watcher = core.getCoreDescriptor().getCoreContainer().getLogging();
+    }
   }
 
   @Override

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java?rev=1501899&r1=1501898&r2=1501899&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java Wed Jul 10 18:33:58 2013
@@ -37,6 +37,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.lucene.LucenePackage;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.request.SolrQueryRequest;
@@ -62,8 +63,20 @@ public class SystemInfoHandler extends R
   //(ie: not static, so core reload will refresh)
   private String hostname = null;
 
+  private CoreContainer cc;
+
   public SystemInfoHandler() {
     super();
+    init();
+  }
+
+  public SystemInfoHandler(CoreContainer cc) {
+    super();
+    this.cc = cc;
+    init();
+  }
+  
+  private void init() {
     try {
       InetAddress addr = InetAddress.getLocalHost();
       hostname = addr.getCanonicalHostName();
@@ -75,14 +88,25 @@ public class SystemInfoHandler extends R
   @Override
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception
   {
-    rsp.add( "core", getCoreInfo( req.getCore(), req.getSchema() ) );
-    boolean solrCloudMode = req.getCore().getCoreDescriptor().getCoreContainer().isZooKeeperAware();
+    SolrCore core = req.getCore();
+    if (core != null) rsp.add( "core", getCoreInfo( core, req.getSchema() ) );
+    boolean solrCloudMode =  getCoreContainer(req, core).isZooKeeperAware();
     rsp.add( "mode", solrCloudMode ? "solrcloud" : "std");
     rsp.add( "lucene", getLuceneInfo() );
     rsp.add( "jvm", getJvmInfo() );
     rsp.add( "system", getSystemInfo() );
     rsp.setHttpCaching(false);
   }
+
+  private CoreContainer getCoreContainer(SolrQueryRequest req, SolrCore core) {
+    CoreContainer coreContainer;
+    if (core != null) {
+       coreContainer = req.getCore().getCoreDescriptor().getCoreContainer();
+    } else {
+      coreContainer = cc;
+    }
+    return coreContainer;
+  }
   
   /**
    * Get system info

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1501899&r1=1501898&r2=1501899&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Wed Jul 10 18:33:58 2013
@@ -218,6 +218,13 @@ public class SolrDispatchFilter implemen
           handleAdminRequest(req, response, handler, solrReq);
           return;
         }
+        // Check for the core admin info url
+        if( path.startsWith( "/admin/info" ) ) {
+          handler = cores.getInfoHandler();
+          solrReq =  SolrRequestParsers.DEFAULT.parse(null,path, req);
+          handleAdminRequest(req, response, handler, solrReq);
+          return;
+        }
         else {
           //otherwise, we should find a core from the path
           idx = path.indexOf( "/", 1 );

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1501899&r1=1501898&r2=1501899&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Wed Jul 10 18:33:58 2013
@@ -31,6 +31,7 @@ import java.util.concurrent.atomic.Atomi
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+
 import junit.framework.Assert;
 
 import org.apache.lucene.util._TestUtil;
@@ -209,6 +210,17 @@ abstract public class SolrExampleTests e
     Assert.assertEquals("price:[* TO 2]", values.get(0));
     Assert.assertEquals("price:[2 TO 4]", values.get(1));
     
+    
+    if (jetty != null) {
+      // check system wide system handler + "/admin/info/system"
+      String url = jetty.getBaseUrl().toString();
+      HttpSolrServer client = new HttpSolrServer(url);
+      SolrQuery q = new SolrQuery();
+      q.set("qt", "/admin/info/system");
+      QueryResponse rsp = client.query(q);
+      assertNotNull(rsp.getResponse().get("mode"));
+      assertNotNull(rsp.getResponse().get("lucene"));
+    }
   }