You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by si...@apache.org on 2012/09/07 07:04:34 UTC

svn commit: r1381870 [2/2] - in /zookeeper/bookkeeper/trunk: ./ bookkeeper-server/bin/ bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ bookkeeper-server/src/main/java/org/apach...

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java?rev=1381870&r1=1381869&r2=1381870&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java Fri Sep  7 05:04:33 2012
@@ -34,7 +34,11 @@ import org.junit.Before;
 import org.junit.After;
 import static org.junit.Assert.*;
 
+import org.apache.bookkeeper.bookie.Bookie;
+import org.apache.bookkeeper.bookie.BookieException;
 import org.apache.bookkeeper.bookie.FileSystemUpgrade;
+import org.apache.bookkeeper.client.BookKeeperAdmin;
+import org.apache.bookkeeper.conf.ClientConfiguration;
 
 public class TestBackwardCompat {
     static Logger LOG = LoggerFactory.getLogger(TestBackwardCompat.class);
@@ -351,6 +355,60 @@ public class TestBackwardCompat {
         }
     }
 
+    /*
+     * Test old cookie accessing the new version formatted cluster.
+     */
+    @Test
+    public void testOldCookieAccessingNewCluster() throws Exception {
+        File journalDir = File.createTempFile("bookie", "journal");
+        journalDir.delete();
+        journalDir.mkdir();
+        File ledgerDir = File.createTempFile("bookie", "ledger");
+        ledgerDir.delete();
+        ledgerDir.mkdir();
+
+        int port = nextPort++;
+
+        // start old server
+        Server410 s410 = new Server410(journalDir, ledgerDir, port);
+        s410.start();
+
+        Ledger410 l410 = Ledger410.newLedger();
+        l410.write100();
+        l410.getId();
+        l410.close();
+        s410.stop();
+
+        // Format the metadata using current version
+        ServerCurrent currentServer = new ServerCurrent(journalDir, ledgerDir,
+                port);
+        BookKeeperAdmin.format(new ClientConfiguration(currentServer.conf),
+                false, true);
+        // start the current version server with old version cookie
+        try {
+            currentServer.start();
+            fail("Bookie should not start with old cookie");
+        } catch (BookieException e) {
+            assertTrue("Old Cookie should not be able to access", e
+                    .getMessage().contains("instanceId"));
+        } finally {
+            currentServer.stop();
+        }
+
+        // Format the bookie also and restart
+        assertTrue("Format should be success",
+                Bookie.format(currentServer.conf, false, true));
+        try {
+            currentServer = null;
+            currentServer = new ServerCurrent(journalDir, ledgerDir, port);
+            currentServer.start();
+        } finally {
+            if (null != currentServer) {
+                currentServer.stop();
+            }
+        }
+    }
+
     /**
      * Test compatability between version 4.0.0 and the current version.
      * Incompatabilities are:

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java?rev=1381870&r1=1381869&r2=1381870&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/ZooKeeperUtil.java Fri Sep  7 05:04:33 2012
@@ -26,17 +26,11 @@ import java.io.IOException;
 
 import java.net.InetSocketAddress;
 
+import org.apache.bookkeeper.util.ZkUtils;
 import org.apache.commons.io.FileUtils;
 
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.ZooDefs.Ids;
@@ -72,25 +66,6 @@ public class ZooKeeperUtil {
         return zkc;
     }
 
-    public ZooKeeper getNewZooKeeperClient() throws Exception {
-        final CountDownLatch latch = new CountDownLatch(1);
-        ZooKeeper zkc = new ZooKeeper(getZooKeeperConnectString(), 10000,
-                new Watcher() {
-                    @Override
-                    public void process(WatchedEvent event) {
-                        // handle session disconnects and expires
-                        if (event.getState().equals(Watcher.Event.KeeperState.SyncConnected)) {
-                            latch.countDown();
-                        }
-                    }
-                });
-        if (!latch.await(10000, TimeUnit.MILLISECONDS)) {
-            zkc.close();
-            fail("Could not connect to zookeeper server");
-        }
-        return zkc;
-    }
-
     public String getZooKeeperConnectString() {
         return connectString;
     }
@@ -115,8 +90,8 @@ public class ZooKeeperUtil {
 
         // create a zookeeper client
         LOG.debug("Instantiate ZK Client");
-        final CountDownLatch latch = new CountDownLatch(1);
-        zkc = getNewZooKeeperClient();
+        zkc = ZkUtils.createConnectedZookeeperClient(
+                getZooKeeperConnectString(), 10000);
 
         // initialize the zk client with values
         zkc.create("/ledgers", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);