You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2018/06/04 21:01:23 UTC

[bookkeeper] 02/10: Allow bookie to start if failed to load extra server components

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

sijie pushed a commit to branch branch-4.7
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit d869f7ca5b8189382deca1a80f00cde608bcbc1c
Author: Sijie Guo <si...@apache.org>
AuthorDate: Tue May 22 01:43:46 2018 -0700

    Allow bookie to start if failed to load extra server components
    
    Descriptions of the changes in this PR:
    
    *Motivation*
    
    `extraServerComponents` provides the flexibility to allow bookie to start with extra server components.
    It acts as a plugin mechanism to extend the functionality of bookies. However it is okay to allow bookie
    start up when failed to load extra server components.
    
    This is a change for allowing starting table service as extra components in bookies.
    
    *Solution*
    
    Catch the exception and log it when failed to load extra server components.
    
    Author: Sijie Guo <si...@apache.org>
    
    Reviewers: Enrico Olivelli <eo...@gmail.com>, Jia Zhai <None>
    
    This closes #1420 from sijie/allow_start_bookie
---
 .../main/java/org/apache/bookkeeper/server/Main.java | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java
index 4815fee..1ef56de 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java
@@ -48,6 +48,7 @@ import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * A bookie server is a server that run bookie and serving rpc requests.
@@ -327,13 +328,18 @@ public class Main {
         // 5. build extra services
         String[] extraComponents = conf.getServerConf().getExtraServerComponents();
         if (null != extraComponents) {
-            List<ServerLifecycleComponent> components = loadServerComponents(
-                extraComponents,
-                conf,
-                rootStatsLogger);
-            for (ServerLifecycleComponent component : components) {
-                serverBuilder.addComponent(component);
-                log.info("Load lifecycle component : {}", component.getClass().getName());
+            try {
+                List<ServerLifecycleComponent> components = loadServerComponents(
+                    extraComponents,
+                    conf,
+                    rootStatsLogger);
+                for (ServerLifecycleComponent component : components) {
+                    serverBuilder.addComponent(component);
+                    log.info("Load lifecycle component : {}", component.getClass().getName());
+                }
+            } catch (Exception e) {
+                log.info("Failed to load extra components '{}' - {}. Continuing without those components.",
+                    StringUtils.join(extraComponents), e.getMessage());
             }
         }
 

-- 
To stop receiving notification emails like this one, please contact
sijie@apache.org.