You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by sj...@apache.org on 2018/09/07 22:07:21 UTC

[bookkeeper] branch master updated: ISSUE #1653: Clients with zk:// uri's should read layout from store

This is an automated email from the ASF dual-hosted git repository.

sjust 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 8711c3b  ISSUE #1653: Clients with zk:// uri's should read layout from store
8711c3b is described below

commit 8711c3b911beb79c20ca87e47077a8ab4ccf5025
Author: Samuel Just <sj...@salesforce.com>
AuthorDate: Fri Sep 7 15:07:18 2018 -0700

    ISSUE #1653: Clients with zk:// uri's should read layout from store
    
    zk+null:// will cause the layout to be read from the store.  This patch
    updates zk:// to do the same.  This matches past behavior with an
    unspecified ledgerManagerFactoryClass.
    
    Some tests needed to be updated with the new behavior.
    
    (bug W-5415120)
    (rev cguttapalem)
    Signed-off-by: Samuel Just <sjustsalesforce.com>
    
    Author: Samuel Just <sj...@salesforce.com>
    
    Reviewers: Sijie Guo <si...@apache.org>
    
    This closes #1668 from athanatos/forupstream/wip-1653, closes #1653
---
 .../apache/bookkeeper/meta/zk/ZKMetadataDriverBase.java   |  3 ++-
 .../org/apache/bookkeeper/meta/TestLedgerManager.java     |  2 +-
 .../meta/zk/ZKMetadataDriverBaseStaticTest.java           | 15 ++++++++++++---
 .../apache/bookkeeper/test/BookKeeperClusterTestCase.java |  4 ++++
 4 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBase.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBase.java
index a9e1a13..e9efc82 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBase.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBase.java
@@ -117,7 +117,8 @@ public class ZKMetadataDriverBase implements AutoCloseable {
                         + schemeParts[1] + "' at uri : " + metadataServiceUri);
             }
         } else {
-            ledgerManagerFactoryClass = HierarchicalLedgerManagerFactory.class;
+            // behave as in the +null case, infer the layout from the store or fall back to the default
+            ledgerManagerFactoryClass = null;
         }
         return ledgerManagerFactoryClass;
     }
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/TestLedgerManager.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/TestLedgerManager.java
index 499a6e9..a91485a 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/TestLedgerManager.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/TestLedgerManager.java
@@ -183,7 +183,7 @@ public class TestLedgerManager extends BookKeeperClusterTestCase {
         String root0 = "/badzk0";
         zkc.create(root0, new byte[0],
                    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
-        conf.setMetadataServiceUri(newMetadataServiceUri(root0));
+        conf.setMetadataServiceUri(newMetadataServiceUri(root0, HierarchicalLedgerManagerFactory.NAME));
 
         LedgerLayout layout = new LedgerLayout("DoesNotExist",
                          0xdeadbeef);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBaseStaticTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBaseStaticTest.java
index 0ed3f7d..66b0961 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBaseStaticTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/zk/ZKMetadataDriverBaseStaticTest.java
@@ -64,11 +64,20 @@ public class ZKMetadataDriverBaseStaticTest {
     }
 
     @Test
-    public void testResolveLedgerManagerFactoryDefaultValue() {
+    public void testResolveLedgerManagerFactoryUnspecifiedLayout() {
         assertEquals(
-            HierarchicalLedgerManagerFactory.class,
+            null,
             ZKMetadataDriverBase.resolveLedgerManagerFactory(
-                URI.create("zk://127.0.0.1/ledgers"))
+                        URI.create("zk://127.0.0.1/ledgers"))
+        );
+    }
+
+    @Test
+    public void testResolveLedgerManagerFactoryNullLayout() {
+        assertEquals(
+                null,
+                ZKMetadataDriverBase.resolveLedgerManagerFactory(
+                        URI.create("zk+null://127.0.0.1/ledgers"))
         );
     }
 
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 e42b818..932abd9 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
@@ -315,6 +315,10 @@ public abstract class BookKeeperClusterTestCase {
         return zkUtil.getMetadataServiceUri(ledgersRootPath);
     }
 
+    protected String newMetadataServiceUri(String ledgersRootPath, String type) {
+        return zkUtil.getMetadataServiceUri(ledgersRootPath, type);
+    }
+
     /**
      * Get bookie address for bookie at index.
      */