Author: markrmiller
Date: Tue Jan 26 20:21:47 2010
New Revision: 903400

URL: http://svn.apache.org/viewvc?rev=903400&view=rev
Log:
add configurable client connect timeout, throw and log exception when 
interrupted during close

Modified:
    
lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/ConnectionManager.java
    lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkClient.java

Modified: 
lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/ConnectionManager.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/ConnectionManager.java?rev=903400&r1=903399&r2=903400&view=diff
==============================================================================
--- 
lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/ConnectionManager.java
 (original)
+++ 
lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/ConnectionManager.java
 Tue Jan 26 20:21:47 2010
@@ -86,7 +86,7 @@
         connectionStrategy.reconnect(zkServerAddress, zkClientTimeout, this, 
new ZkClientConnectionStrategy.ZkUpdate() {
           @Override
           public void update(ZooKeeper keeper) throws InterruptedException, 
TimeoutException, IOException {
-           waitForConnected(SolrZkClient.CONNECT_TIMEOUT);
+           waitForConnected(SolrZkClient.DEFAULT_CLIENT_CONNECT_TIMEOUT);
            client.updateKeeper(keeper);
            if(onReconnect != null) {
              onReconnect.command();

Modified: 
lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkClient.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkClient.java?rev=903400&r1=903399&r2=903400&view=diff
==============================================================================
--- lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkClient.java 
(original)
+++ lucene/solr/branches/cloud/src/java/org/apache/solr/cloud/SolrZkClient.java 
Tue Jan 26 20:21:47 2010
@@ -25,6 +25,7 @@
 
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.cloud.ZkClientConnectionStrategy.ZkUpdate;
+import org.apache.solr.common.SolrException;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.Watcher;
@@ -50,7 +51,7 @@
     public void command();
   }
 
-  static final int CONNECT_TIMEOUT = 5000;
+  static final int DEFAULT_CLIENT_CONNECT_TIMEOUT = 5000;
 
   private static final Logger log = LoggerFactory
       .getLogger(SolrZkClient.class);
@@ -80,6 +81,8 @@
    * @param zkServerAddress
    * @param zkClientTimeout
    * @param strat
+   * @param onReconnect
+   * @param clientConnectTimeout
    * @throws InterruptedException
    * @throws TimeoutException
    * @throws IOException
@@ -87,6 +90,22 @@
   public SolrZkClient(String zkServerAddress, int zkClientTimeout,
       ZkClientConnectionStrategy strat, final OnReconnect onReconnect) throws 
InterruptedException,
       TimeoutException, IOException {
+    this(zkServerAddress, zkClientTimeout, strat, onReconnect, 
DEFAULT_CLIENT_CONNECT_TIMEOUT);
+  }
+
+  /**
+   * @param zkServerAddress
+   * @param zkClientTimeout
+   * @param strat
+   * @param onReconnect
+   * @param clientConnectTimeout
+   * @throws InterruptedException
+   * @throws TimeoutException
+   * @throws IOException
+   */
+  public SolrZkClient(String zkServerAddress, int zkClientTimeout,
+      ZkClientConnectionStrategy strat, final OnReconnect onReconnect, int 
clientConnectTimeout) throws InterruptedException,
+      TimeoutException, IOException {
     connManager = new ConnectionManager("ZooKeeperConnection Watcher:"
         + zkServerAddress, this, zkServerAddress, zkClientTimeout, strat, 
onReconnect);
     strat.connect(zkServerAddress, zkClientTimeout, connManager,
@@ -97,13 +116,17 @@
               try {
                 keeper.close();
               } catch (InterruptedException e) {
-                // nocommit
+                // Restore the interrupted status
+                Thread.currentThread().interrupt();
+                log.error("", e);
+                throw new 
ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR,
+                    "", e);
               }
             }
             keeper = zooKeeper;
           }
         });
-    connManager.waitForConnected(CONNECT_TIMEOUT);
+    connManager.waitForConnected(clientConnectTimeout);
   }
 
   /**
@@ -402,6 +425,7 @@
           string.append(dent + "DATA: ...supressed..." + NEWL);
         }
       } catch (UnsupportedEncodingException e) {
+        // can't happen - UTF-8
         throw new RuntimeException(e);
       }
     }


Reply via email to