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 2017/08/11 10:23:15 UTC

[bookkeeper] branch master updated: ISSUE #414: use a clone of baseconf in new ServerConfiguration(baseConf)

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 b4a1c76  ISSUE #414: use a clone of baseconf in new ServerConfiguration(baseConf)
b4a1c76 is described below

commit b4a1c76054c54d05d38a89399efa716201a2206b
Author: zhaijack <zh...@gmail.com>
AuthorDate: Fri Aug 11 03:23:08 2017 -0700

    ISSUE #414: use a clone of baseconf in new ServerConfiguration(baseConf)
    
    Descriptions of the changes in this PR:
    This PR fix Issue #414 , and in the comments of that issue contains the anysis of the bug.  Main changes:
    - Privde a clone of baseConf while do loadconf(baseConf), so make baseConf and newConf work independently.
    - Remove 'loadConf(Configuration otherConf) ', since Configuration is an interface in common-configs and not have a clone method.
    
    ---
    Be sure to do all of the following to help us incorporate your contribution
    quickly and easily:
    
    - [X] Make sure the PR title is formatted like:
        `<Issue # or BOOKKEEPER-#>: Description of pull request`
        `e.g. Issue 123: Description ...`
        `e.g. BOOKKEEPER-1234: Description ...`
    - [ ] Make sure tests pass via `mvn clean apache-rat:check install findbugs:check`.
    - [X] Replace `<Issue # or BOOKKEEPER-#>` in the title with the actual Issue/JIRA number.
    
    ---
    
    Author: zhaijack <zh...@gmail.com>
    
    Reviewers: Sijie Guo <si...@apache.org>
    
    This closes #424 from zhaijack/issue_414, closes #414
---
 .../java/org/apache/bookkeeper/bookie/BookieShell.java |  3 +--
 .../apache/bookkeeper/conf/AbstractConfiguration.java  | 18 ++++--------------
 .../src/main/java/org/apache/bookkeeper/util/Tool.java |  4 ++--
 3 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java
index c5a65c0..36cd832 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java
@@ -84,7 +84,6 @@ import org.apache.commons.cli.MissingArgumentException;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
@@ -2028,7 +2027,7 @@ public class BookieShell implements Tool {
     }
 
     @Override
-    public void setConf(Configuration conf) throws Exception {
+    public void setConf(CompositeConfiguration conf) throws Exception {
         bkConf.loadConf(conf);
         journalDirectories = Bookie.getCurrentDirectories(bkConf.getJournalDirs());
         ledgerDirectories = Bookie.getCurrentDirectories(bkConf.getLedgerDirs());
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
index 5a081ce..7b89bb0 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
@@ -117,8 +117,8 @@ public abstract class AbstractConfiguration extends CompositeConfiguration {
      *          Configuration URL
      */
     public void loadConf(URL confURL) throws ConfigurationException {
-        Configuration loadedConf = new PropertiesConfiguration(confURL);
-        addConfiguration(loadedConf);
+        PropertiesConfiguration loadedConf = new PropertiesConfiguration(confURL);
+        addConfiguration((Configuration)loadedConf.clone());
     }
 
     /**
@@ -127,18 +127,8 @@ public abstract class AbstractConfiguration extends CompositeConfiguration {
      * @param baseConf
      *          Other Configuration
      */
-    public void loadConf(AbstractConfiguration baseConf) {
-        addConfiguration(baseConf); 
-    }
-
-    /**
-     * Load configuration from other configuration object
-     *
-     * @param otherConf
-     *          Other configuration object
-     */
-    public void loadConf(Configuration otherConf) {
-        addConfiguration(otherConf);
+    public void loadConf(CompositeConfiguration baseConf) {
+        addConfiguration((CompositeConfiguration)baseConf.clone());
     }
 
     /**
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/Tool.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/Tool.java
index 22c56e9..0ffa00e 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/Tool.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/Tool.java
@@ -18,7 +18,7 @@
 
 package org.apache.bookkeeper.util;
 
-import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.CompositeConfiguration;
 
 /**
  * A tool interface that supports handling of generic command-line options.
@@ -39,5 +39,5 @@ public interface Tool {
      * @param conf configuration object
      * @throws Exception
      */
-    public void setConf(Configuration conf) throws Exception;
+    public void setConf(CompositeConfiguration conf) throws Exception;
 }

-- 
To stop receiving notification emails like this one, please contact
['"commits@bookkeeper.apache.org" <co...@bookkeeper.apache.org>'].