You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2018/03/17 04:31:33 UTC

[GitHub] sijie closed pull request #1270: Improve `BookKeeperAdmin#format` to avoid constructing redundant resources

sijie closed pull request #1270: Improve `BookKeeperAdmin#format` to avoid constructing redundant resources
URL: https://github.com/apache/bookkeeper/pull/1270
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
index 7671721d2..56865db27 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
@@ -21,6 +21,7 @@
 package org.apache.bookkeeper.client;
 
 import static com.google.common.base.Preconditions.checkArgument;
+import static org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithMetadataBookieDriver;
 import static org.apache.bookkeeper.meta.MetadataDrivers.runFunctionWithRegistrationManager;
 
 import com.google.common.collect.Lists;
@@ -1133,9 +1134,9 @@ public void processResult(int rc, String s, Object ctx) {
      */
     public static boolean format(ServerConfiguration conf,
             boolean isInteractive, boolean force) throws Exception {
-        return runFunctionWithRegistrationManager(conf, rm -> {
+        return runFunctionWithMetadataBookieDriver(conf, driver -> {
             try {
-                boolean ledgerRootExists = rm.prepareFormat();
+                boolean ledgerRootExists = driver.getRegistrationManager().prepareFormat();
 
                 // If old data was there then confirm with admin.
                 boolean doFormat = true;
@@ -1160,11 +1161,11 @@ public static boolean format(ServerConfiguration conf,
                     return false;
                 }
 
-                try (BookKeeper bkc = new BookKeeper(new ClientConfiguration(conf))) {
-                    bkc.ledgerManagerFactory.format(conf, bkc.getMetadataClientDriver().getLayoutManager());
-                }
+                driver.getLedgerManagerFactory().format(
+                    conf,
+                    driver.getLayoutManager());
 
-                return rm.format();
+                return driver.getRegistrationManager().format();
             } catch (Exception e) {
                 throw new UncheckedExecutionException(e.getMessage(), e);
             }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MetadataBookieDriver.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MetadataBookieDriver.java
index 9b11f28d2..b4d0e0d1b 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MetadataBookieDriver.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MetadataBookieDriver.java
@@ -64,6 +64,13 @@ MetadataBookieDriver initialize(ServerConfiguration conf,
     LedgerManagerFactory getLedgerManagerFactory()
         throws MetadataException;
 
+    /**
+     * Return the layout manager.
+     *
+     * @return the layout manager.
+     */
+    LayoutManager getLayoutManager();
+
     @Override
     void close();
 
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/MetadataDriversTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/MetadataDriversTest.java
index b5868903d..2d69cd2be 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/MetadataDriversTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/MetadataDriversTest.java
@@ -51,7 +51,7 @@
  */
 public class MetadataDriversTest {
 
-    static class ClientDriver1 implements MetadataClientDriver {
+    abstract static class TestClientDriver implements MetadataClientDriver {
 
         @Override
         public MetadataClientDriver initialize(ClientConfiguration conf,
@@ -61,11 +61,6 @@ public MetadataClientDriver initialize(ClientConfiguration conf,
             return this;
         }
 
-        @Override
-        public String getScheme() {
-            return "driver1";
-        }
-
         @Override
         public RegistrationClient getRegistrationClient() {
             return mock(RegistrationClient.class);
@@ -86,43 +81,25 @@ public void close() {
         }
     }
 
-    static class ClientDriver2 implements MetadataClientDriver {
-
-        @Override
-        public MetadataClientDriver initialize(ClientConfiguration conf,
-                                               ScheduledExecutorService scheduler,
-                                               StatsLogger statsLogger,
-                                               Optional<Object> ctx) throws MetadataException {
-            return this;
-        }
+    static class ClientDriver1 extends TestClientDriver {
 
         @Override
         public String getScheme() {
-            return "driver2";
+            return "driver1";
         }
 
-        @Override
-        public RegistrationClient getRegistrationClient() {
-            return mock(RegistrationClient.class);
-        }
+    }
 
-        @Override
-        public LedgerManagerFactory getLedgerManagerFactory() throws MetadataException {
-            return mock(LedgerManagerFactory.class);
-        }
+    static class ClientDriver2 extends TestClientDriver {
 
         @Override
-        public LayoutManager getLayoutManager() {
-            return mock(LayoutManager.class);
+        public String getScheme() {
+            return "driver2";
         }
 
-        @Override
-        public void close() {
-        }
     }
 
-    static class BookieDriver1 implements MetadataBookieDriver {
-
+    abstract static class TestBookieDriver implements MetadataBookieDriver {
         @Override
         public MetadataBookieDriver initialize(ServerConfiguration conf,
                                                RegistrationListener listener,
@@ -130,11 +107,6 @@ public MetadataBookieDriver initialize(ServerConfiguration conf,
             return this;
         }
 
-        @Override
-        public String getScheme() {
-            return "driver1";
-        }
-
         @Override
         public RegistrationManager getRegistrationManager() {
             return mock(RegistrationManager.class);
@@ -146,37 +118,32 @@ public LedgerManagerFactory getLedgerManagerFactory() throws MetadataException {
         }
 
         @Override
-        public void close() {
+        public LayoutManager getLayoutManager() {
+            return mock(LayoutManager.class);
         }
-    }
-
-    static class BookieDriver2 implements MetadataBookieDriver {
 
         @Override
-        public MetadataBookieDriver initialize(ServerConfiguration conf,
-                                               RegistrationListener listener,
-                                               StatsLogger statsLogger) throws MetadataException {
-            return this;
+        public void close() {
+
         }
+    }
+
+    static class BookieDriver1 extends TestBookieDriver {
 
         @Override
         public String getScheme() {
-            return "driver2";
+            return "driver1";
         }
 
-        @Override
-        public RegistrationManager getRegistrationManager() {
-            return mock(RegistrationManager.class);
-        }
+    }
 
-        @Override
-        public LedgerManagerFactory getLedgerManagerFactory() throws MetadataException {
-            return mock(LedgerManagerFactory.class);
-        }
+    static class BookieDriver2 extends TestBookieDriver {
 
         @Override
-        public void close() {
+        public String getScheme() {
+            return "driver2";
         }
+
     }
 
     private Map<String, MetadataClientDriverInfo> savedClientDrivers;


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services