Index: hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java (revision 1485016) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java (working copy) @@ -170,9 +170,9 @@ for (int i = 0; i < this.replicationQueueNbCapacity; i++) { this.entriesArray[i] = new HLog.Entry(); } - this.maxRetriesMultiplier = - this.conf.getInt("replication.source.maxretriesmultiplier", 10); - this.socketTimeoutMultiplier = maxRetriesMultiplier * maxRetriesMultiplier; + this.maxRetriesMultiplier = this.conf.getInt("replication.source.maxretriesmultiplier", 10); + this.socketTimeoutMultiplier = this.conf.getInt("replication.source.socketTimeoutMultiplier", + maxRetriesMultiplier * maxRetriesMultiplier); this.queue = new PriorityBlockingQueue( conf.getInt("hbase.regionserver.maxlogs", 32), @@ -452,14 +452,16 @@ } private void connectToPeers() { + int sleepMultiplier = 1; + // Connect to peer cluster first, unless we have to stop while (this.isActive() && this.currentPeers.size() == 0) { - try { - chooseSinks(); - Thread.sleep(this.sleepForRetries); - } catch (InterruptedException e) { - LOG.error("Interrupted while trying to connect to sinks", e); + chooseSinks(); + if (this.isActive() && this.currentPeers.size() == 0) { + if (sleepForRetries("Waiting for peers", sleepMultiplier)) { + sleepMultiplier++; + } } } }