HADOOP-19228. ShellCommandFencer#setConfAsEnvVars should also replace '-' with '_'. (#6936). Contributed by fuchaohong.

Signed-off-by: He Xiaoqiao <hexiaoqiao@apache.org>
This commit is contained in:
fuchaohong 2024-07-20 16:13:33 +08:00 committed by GitHub
parent a5eb5e9611
commit 1577f57d4c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 7 additions and 7 deletions

View File

@ -183,7 +183,7 @@ public final Map<String, String> getFencingParameters() {
* 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.

View File

@ -39,8 +39,8 @@
* (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 @@ private static String tryGetPid(Process p) {
/**
* 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 @@ private void addTargetInfoAsEnvVars(HAServiceTarget target,
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());
}
}

View File

@ -63,7 +63,7 @@ public void resetLogSpy() {
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;