You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by yo...@apache.org on 2010/01/23 02:49:31 UTC

svn commit: r902332 - in /lucene/solr/branches/cloud/src/java/org/apache/solr: cloud/SolrZkServer.java core/CoreContainer.java

Author: yonik
Date: Sat Jan 23 01:49:31 2010
New Revision: 902332

URL: http://svn.apache.org/viewvc?rev=902332&view=rev
Log:
more work on getting zk ensemble to run

Modified:
    lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkServer.java
    lucene/solr/branches/cloud/src/java/org/apache/solr/core/CoreContainer.java

Modified: lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkServer.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkServer.java?rev=902332&r1=902331&r2=902332&view=diff
==============================================================================
--- lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkServer.java (original)
+++ lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkServer.java Sat Jan 23 01:49:31 2010
@@ -20,12 +20,13 @@
 
 
 public class SolrZkServer {
-  protected static org.slf4j.Logger log = LoggerFactory.getLogger(SolrZkServer.class);
+  static org.slf4j.Logger log = LoggerFactory.getLogger(SolrZkServer.class);
   
   String runZk;
   String zkHost;
   String solrHome;
   String solrPort;
+  Properties props;
   SolrZkServerProps zkProps;
 
   private Thread zkThread;  // the thread running a zookeeper server, only if runZk is set
@@ -37,9 +38,26 @@
     this.solrPort = solrPort;
   }
 
-  public void parseConfig() {
-    if (runZk == null) return;
+  public String getClientString() {
+    if (props==null) return null;
+
+    StringBuilder result = new StringBuilder();
+    for (Entry<Object, Object> entry : props.entrySet()) {
+      String key = entry.getKey().toString().trim();
+      String value = entry.getValue().toString().trim();
+      if (key.startsWith("server.")) {
+        int first = value.indexOf(':');
+        int second = value.indexOf(':', first+1);
+        String host = value.substring(0, second>0 ? second : first);
+        if (result.length() > 0)
+          result.append(',');
+        result.append(host);
+      }
+    }
+    return result.toString();
+  }
 
+  public void parseConfig() {
     if (zkProps == null) {
       zkProps = new SolrZkServerProps();
       // set default data dir
@@ -49,12 +67,14 @@
     }
     
     try {
-      Properties props = SolrZkServerProps.getProperties(solrHome + '/' + "zoo.cfg");
+      props = SolrZkServerProps.getProperties(solrHome + '/' + "zoo.cfg");
       SolrZkServerProps.injectServers(props, zkHost);
       zkProps.parseProperties(props);
     } catch (QuorumPeerConfig.ConfigException e) {
-      throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
+      if (runZk != null)
+        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
     } catch (IOException e) {
+      if (runZk != null)
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
     }
   }
@@ -83,7 +103,12 @@
       }
     };
 
-    log.info("STARTING ZOOKEEPER SERVER");
+    if (zkProps.getServers().size() > 1) {
+      log.info("STARTING EMBEDDED ENSEMBLE ZOOKEEPER SERVER");      
+    } else {
+      log.info("STARTING EMBEDDED STANDALONE ZOOKEEPER SERVER");
+    }
+
     zkThread.setDaemon(true);
     zkThread.start();
     try {
@@ -101,6 +126,8 @@
 }
 
 
+
+
 // Allows us to set a default for the data dir before parsing
 // zoo.cfg (which validates that there is a dataDir)
 class SolrZkServerProps extends QuorumPeerConfig {
@@ -108,6 +135,7 @@
 
   String solrPort; // port that Solr is listening on
   String runZk;    // the runZk param
+  Properties sourceProps;
 
   /**
    * Parse a ZooKeeper configuration file
@@ -178,7 +206,7 @@
 
     InetSocketAddress thisAddr = null;
 
-    if (runZk != null) {
+    if (runZk != null && runZk.length()>0) {
       String parts[] = runZk.split(":");
       thisAddr = new InetSocketAddress(parts[0], Integer.parseInt(parts[1]));
     } else {
@@ -190,6 +218,7 @@
 
     for (QuorumPeer.QuorumServer server : slist.values()) {
       if (server.addr.equals(thisAddr)) {
+        LOG.info("I AM SERVER #" + server.id + " Addr=" + server.addr);
         return server.id;
       }
     }
@@ -198,6 +227,7 @@
   }
 
 
+
   public void setDataDir(String dataDir) {
     this.dataDir = dataDir;
   }
@@ -342,7 +372,9 @@
         Long myid = getMySeverId();
         if (myid != null) {
           serverId = myid;
+          return;
         }
+        if (runZk == null) return;
         //////////////// END ADDED FOR SOLR //////
         throw new IllegalArgumentException(myIdFile.toString()
             + " file is missing");

Modified: lucene/solr/branches/cloud/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/cloud/src/java/org/apache/solr/core/CoreContainer.java?rev=902332&r1=902331&r2=902332&view=diff
==============================================================================
--- lucene/solr/branches/cloud/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/solr/branches/cloud/src/java/org/apache/solr/core/CoreContainer.java Sat Jan 23 01:49:31 2010
@@ -111,12 +111,13 @@
 
     // set client from server config if not already set
     if (zookeeperHost == null) {
-      // TODO
+      zookeeperHost = zkServer.getClientString();
     }
     
     if (zookeeperHost != null) {
       // we are ZooKeeper enabled
       try {
+        log.info("Zookeeper client=" + zookeeperHost);
         zooKeeperController = new ZkController(zookeeperHost, zkClientTimeout, host, hostPort, hostContext, this);
         
         String confDir = System.getProperty("bootstrap_confdir");