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

hexiaoqiao pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 1577f57d4c8 HADOOP-19228. ShellCommandFencer#setConfAsEnvVars should 
also replace '-' with '_'. (#6936). Contributed by  fuchaohong.
1577f57d4c8 is described below

commit 1577f57d4c8bc9a0ef200a9e308e1c0f2c21c18f
Author: fuchaohong <1783129...@qq.com>
AuthorDate: Sat Jul 20 16:13:33 2024 +0800

    HADOOP-19228. ShellCommandFencer#setConfAsEnvVars should also replace '-' 
with '_'. (#6936). Contributed by  fuchaohong.
    
    Signed-off-by: He Xiaoqiao <hexiaoq...@apache.org>
---
 .../src/main/java/org/apache/hadoop/ha/HAServiceTarget.java    |  2 +-
 .../src/main/java/org/apache/hadoop/ha/ShellCommandFencer.java | 10 +++++-----
 .../test/java/org/apache/hadoop/ha/TestShellCommandFencer.java |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAServiceTarget.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAServiceTarget.java
index 288a9dcbe0e..701862a0f07 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAServiceTarget.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAServiceTarget.java
@@ -183,7 +183,7 @@ public abstract class HAServiceTarget {
    * expose to fencing implementations/scripts. Fencing methods are free
    * to use this map as they see fit -- notably, the shell script
    * implementation takes each entry, prepends 'target_', substitutes
-   * '_' for '.', and adds it to the environment of the script.
+   * '_' for '.' and '-', and adds it to the environment of the script.
    *
    * Subclass implementations should be sure to delegate to the superclass
    * implementation as well as adding their own keys.
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ShellCommandFencer.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ShellCommandFencer.java
index 1ffcc3009ea..059c87c0d31 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ShellCommandFencer.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ShellCommandFencer.java
@@ -39,8 +39,8 @@ import org.slf4j.LoggerFactory;
  * (cmd.exe on Windows) and may not include any closing parentheses.<p>
  * 
  * The shell command will be run with an environment set up to contain
- * all of the current Hadoop configuration variables, with the '_' character 
- * replacing any '.' characters in the configuration keys.<p>
+ * all of the current Hadoop configuration variables, with the '_' character
+ * replacing any '.' or '-' characters in the configuration keys.<p>
  * 
  * If the shell command returns an exit code of 0, the fencing is
  * determined to be successful. If it returns any other exit code, the
@@ -202,11 +202,11 @@ public class ShellCommandFencer
 
   /**
    * Set the environment of the subprocess to be the Configuration,
-   * with '.'s replaced by '_'s.
+   * with '.'s and '-'s replaced by '_'s.
    */
   private void setConfAsEnvVars(Map<String, String> env) {
     for (Map.Entry<String, String> pair : getConf()) {
-      env.put(pair.getKey().replace('.', '_'), pair.getValue());
+      env.put(pair.getKey().replaceAll("[.-]", "_"), pair.getValue());
     }
   }
 
@@ -237,7 +237,7 @@ public class ShellCommandFencer
     for (Map.Entry<String, String> e :
          target.getFencingParameters().entrySet()) {
       String key = prefix + e.getKey();
-      key = key.replace('.', '_');
+      key = key.replaceAll("[.-]", "_");
       environment.put(key, e.getValue());
     }
   }
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
index 88afb35a8dd..3eb6f42e467 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
@@ -63,7 +63,7 @@ public class TestShellCommandFencer {
   
   private static ShellCommandFencer createFencer() {
     Configuration conf = new Configuration();
-    conf.set("in.fencing.tests", "yessir");
+    conf.set("in.fencing-tests", "yessir");
     ShellCommandFencer fencer = new ShellCommandFencer();
     fencer.setConf(conf);
     return fencer;


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to