This is an automated email from the ASF dual-hosted git repository.
sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new cbb5ad5 Use BookieServer#getLocalAddress as the identifier in the test
cbb5ad5 is described below
commit cbb5ad555292d699e1fb2829cba46b9a7b69a7d8
Author: Sijie Guo <[email protected]>
AuthorDate: Mon Feb 19 20:32:24 2018 -0800
Use BookieServer#getLocalAddress as the identifier in the test
Descriptions of the changes in this PR:
*Problem*
Issue #1097 introduced using `loopback` nic as the bookie server
identifier. However a few test cases construct the bookie socket address using
`InetAddress.getLocalHost()` and the bookie port. This bookie socket address
can be different from the actual socket address that a bookie is advertising to
zookeeper. It will cause test cases fail with certain network settings.
*Solution*
This change use `BookieServer#getLocalAddress()` to retrieve the actual
bookie socket address. so it would respect to the server configuration and use
the right socket address in the test.
Author: Sijie Guo <[email protected]>
Reviewers: Charan Reddy Guttapalem <[email protected]>, Enrico
Olivelli <[email protected]>
This closes #1172 from sijie/use_bookie_server_get_local_address
---
.../bookkeeper/client/BookieRecoveryTest.java | 28 +++---------
.../client/TestLedgerFragmentReplication.java | 15 +++----
.../TestAutoRecoveryAlongWithBookieServers.java | 5 +--
.../replication/TestReplicationWorker.java | 52 +++++++---------------
.../bookkeeper/test/BookKeeperClusterTestCase.java | 10 ++++-
5 files changed, 38 insertions(+), 72 deletions(-)
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieRecoveryTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieRecoveryTest.java
index 38bb59d..0536ff8 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieRecoveryTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieRecoveryTest.java
@@ -28,7 +28,6 @@ import static org.junit.Assert.fail;
import io.netty.buffer.ByteBuf;
import java.io.IOException;
-import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
@@ -307,20 +306,18 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
// Shutdown the first bookie server
LOG.info("Finished writing all ledger entries so shutdown one of the
bookies.");
- int initialPort = bsConfs.get(0).getBookiePort();
+ BookieSocketAddress bookieSrc = bs.get(0).getLocalAddress();
bs.get(0).shutdown();
bs.remove(0);
// Startup a new bookie server
- int newBookiePort = startNewBookie();
+ startNewBookie();
// Write some more entries for the ledgers so a new ensemble will be
// created for them.
writeEntriestoLedgers(numMsgs, 10, lhs);
// Call the async recover bookie method.
- BookieSocketAddress bookieSrc = new
BookieSocketAddress(InetAddress.getLocalHost().getHostAddress(),
- initialPort);
// Initiate the sync object
sync.value = false;
bkAdmin.asyncRecoverBookieData(bookieSrc, bookieRecoverCb, sync);
@@ -359,7 +356,7 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
// Shutdown the first bookie server
LOG.info("Finished writing all ledger entries so shutdown one of the
bookies.");
- int initialPort = bsConfs.get(0).getBookiePort();
+ BookieSocketAddress bookieSrc = bs.get(0).getLocalAddress();
bs.get(0).shutdown();
bs.remove(0);
@@ -373,8 +370,6 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
writeEntriestoLedgers(numMsgs, 10, lhs);
// Call the async recover bookie method.
- BookieSocketAddress bookieSrc = new
BookieSocketAddress(InetAddress.getLocalHost().getHostAddress(),
- initialPort);
LOG.info("Now recover the data on the killed bookie (" + bookieSrc
+ ") and replicate it to a random available one");
// Initiate the sync object
@@ -414,7 +409,7 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
// Shutdown the first bookie server
LOG.info("Finished writing all ledger entries so shutdown one of the
bookies.");
- int initialPort = bsConfs.get(0).getBookiePort();
+ BookieSocketAddress bookieSrc = bs.get(0).getLocalAddress();
bs.get(0).shutdown();
bs.remove(0);
@@ -426,12 +421,7 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
writeEntriestoLedgers(numMsgs, 10, lhs);
// Call the sync recover bookie method.
- BookieSocketAddress bookieSrc = new
BookieSocketAddress(InetAddress.getLocalHost().getHostAddress(),
- initialPort);
- BookieSocketAddress bookieDest = new
BookieSocketAddress(InetAddress.getLocalHost().getHostAddress(),
- newBookiePort);
- LOG.info("Now recover the data on the killed bookie (" + bookieSrc +
") and replicate it to the new one ("
- + bookieDest + ")");
+ LOG.info("Now recover the data on the killed bookie (" + bookieSrc +
") and replicate it to other bookies");
bkAdmin.recoverBookieData(bookieSrc);
// Verify the recovered ledger entries are okay.
@@ -460,7 +450,7 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
// Shutdown the first bookie server
LOG.info("Finished writing all ledger entries so shutdown one of the
bookies.");
- int initialPort = bsConfs.get(0).getBookiePort();
+ BookieSocketAddress bookieSrc = bs.get(0).getLocalAddress();
bs.get(0).shutdown();
bs.remove(0);
@@ -474,8 +464,6 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
writeEntriestoLedgers(numMsgs, 10, lhs);
// Call the sync recover bookie method.
- BookieSocketAddress bookieSrc = new
BookieSocketAddress(InetAddress.getLocalHost().getHostAddress(),
- initialPort);
LOG.info("Now recover the data on the killed bookie (" + bookieSrc
+ ") and replicate it to a random available one");
bkAdmin.recoverBookieData(bookieSrc);
@@ -757,13 +745,11 @@ public class BookieRecoveryTest extends
BookKeeperClusterTestCase {
// Shutdown the first bookie server
LOG.info("Finished writing all ledger entries so shutdown one of the
bookies.");
- int initialPort = bsConfs.get(0).getBookiePort();
+ BookieSocketAddress bookieSrc = bs.get(0).getLocalAddress();
bs.get(0).shutdown();
bs.remove(0);
// Call the async recover bookie method.
- BookieSocketAddress bookieSrc = new
BookieSocketAddress(InetAddress.getLocalHost().getHostAddress(),
- initialPort);
LOG.info("Now recover the data on the killed bookie (" + bookieSrc
+ ") and replicate it to a random available one");
// Initiate the sync object
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerFragmentReplication.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerFragmentReplication.java
index a4d60aa..c620cc1 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerFragmentReplication.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerFragmentReplication.java
@@ -25,7 +25,6 @@ import static org.junit.Assert.fail;
import com.google.common.collect.Sets;
-import java.net.InetAddress;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Enumeration;
@@ -95,14 +94,13 @@ public class TestLedgerFragmentReplication extends
BookKeeperClusterTestCase {
LOG.info("Killing Bookie", replicaToKill);
killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
+
for (int i = 0; i < 10; i++) {
lh.addEntry(data);
}
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
- LOG.info("New Bookie addr :" + newBkAddr);
Set<LedgerFragment> result = getFragmentsToReplicate(lh);
BookKeeperAdmin admin = new BookKeeperAdmin(baseClientConf);
@@ -161,13 +159,12 @@ public class TestLedgerFragmentReplication extends
BookKeeperClusterTestCase {
BookieSocketAddress replicaToKill2 = lh.getLedgerMetadata()
.getEnsembles().get(0L).get(1);
- int startNewBookie2 = startNewBookie();
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
+
LOG.info("Killing Bookie", replicaToKill2);
killBookie(replicaToKill2);
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie2);
- LOG.info("New Bookie addr :" + newBkAddr);
Set<LedgerFragment> result = getFragmentsToReplicate(lh);
BookKeeperAdmin admin = new BookKeeperAdmin(baseClientConf);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestAutoRecoveryAlongWithBookieServers.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestAutoRecoveryAlongWithBookieServers.java
index af456d3..3d39734 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestAutoRecoveryAlongWithBookieServers.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestAutoRecoveryAlongWithBookieServers.java
@@ -23,7 +23,6 @@ package org.apache.bookkeeper.replication;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Map.Entry;
@@ -71,9 +70,7 @@ public class TestAutoRecoveryAlongWithBookieServers extends
killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
while (ReplicationTestUtil.isLedgerInUnderReplication(zkc, lh.getId(),
basePath)) {
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java
index b1a5f03..d77bce9 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/TestReplicationWorker.java
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Map.Entry;
@@ -126,15 +125,13 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
LOG.info("Killing Bookie", replicaToKill);
killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
+
for (int i = 0; i < 10; i++) {
lh.addEntry(data);
}
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
- LOG.info("New Bookie addr :" + newBkAddr);
-
ReplicationWorker rw = new ReplicationWorker(zkc, baseConf);
rw.start();
@@ -176,9 +173,7 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
LOG.info("Killing Bookie", replicaToKill);
ServerConfiguration killedBookieConfig = killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
LOG.info("New Bookie addr :" + newBkAddr);
killAllBookies(lh, newBkAddr);
@@ -230,17 +225,13 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
killAllBookies(lh, null);
// Starte RW1
- int startNewBookie1 = startNewBookie();
- BookieSocketAddress newBkAddr1 = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie1);
- LOG.info("New Bookie addr :" + newBkAddr1);
+ BookieSocketAddress newBkAddr1 = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr1);
ReplicationWorker rw1 = new ReplicationWorker(zkc, baseConf);
// Starte RW2
- int startNewBookie2 = startNewBookie();
- BookieSocketAddress newBkAddr2 = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie2);
- LOG.info("New Bookie addr :" + newBkAddr2);
+ BookieSocketAddress newBkAddr2 = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr2);
ZooKeeper zkc1 = ZooKeeperClient.newBuilder()
.connectString(zkUtil.getZooKeeperConnectString())
.sessionTimeoutMs(10000)
@@ -294,10 +285,8 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
LOG.info("Killing Bookie", replicaToKill);
killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
- LOG.info("New Bookie addr :" + newBkAddr);
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
ReplicationWorker rw = new ReplicationWorker(zkc, baseConf);
rw.start();
@@ -350,11 +339,8 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
killBookie(replicaToKillFromFirstLedger);
lh2.close();
- int startNewBookie = startNewBookie();
-
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
- LOG.info("New Bookie addr :" + newBkAddr);
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
ReplicationWorker rw = new ReplicationWorker(zkc, baseConf);
@@ -407,11 +393,8 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
LOG.info("Killing Bookie", replicaToKill);
killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
-
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
- LOG.info("New Bookie addr :" + newBkAddr);
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
// set to 3s instead of default 30s
baseConf.setOpenLedgerRereplicationGracePeriod("3000");
@@ -469,7 +452,8 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
LOG.info("Killing Bookie", replicaToKill);
killBookie(replicaToKill);
- int startNewBookie = startNewBookie();
+ BookieSocketAddress newBkAddr = startNewBookieAndReturnAddress();
+ LOG.info("New Bookie addr : {}", newBkAddr);
// Reform ensemble...Making sure that last fragment is not in
// under-replication
@@ -477,10 +461,6 @@ public class TestReplicationWorker extends
BookKeeperClusterTestCase {
lh.addEntry(data);
}
- BookieSocketAddress newBkAddr = new BookieSocketAddress(InetAddress
- .getLocalHost().getHostAddress(), startNewBookie);
- LOG.info("New Bookie addr :" + newBkAddr);
-
ReplicationWorker rw = new ReplicationWorker(zkc, baseConf);
baseClientConf.setZkServers(zkUtil.getZooKeeperConnectString());
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
index b965d15..04e253d 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
@@ -584,12 +584,18 @@ public abstract class BookKeeperClusterTestCase {
*/
public int startNewBookie()
throws Exception {
+ return startNewBookieAndReturnAddress().getPort();
+ }
+
+ public BookieSocketAddress startNewBookieAndReturnAddress()
+ throws Exception {
ServerConfiguration conf = newServerConfiguration();
bsConfs.add(conf);
LOG.info("Starting new bookie on port: {}", conf.getBookiePort());
- bs.add(startBookie(conf));
+ BookieServer server = startBookie(conf);
+ bs.add(server);
- return conf.getBookiePort();
+ return server.getLocalAddress();
}
/**
--
To stop receiving notification emails like this one, please contact
[email protected].