[Pacemaker] About environment variable of Pacemaker processes

Kazunori INOUE inouekazu at intellilink.co.jp
Mon Feb 4 03:29:03 EST 2013


Hi,

In the environment where variable LANG was set,
when pacemaker was started by 'service', the LANG was taken over to Pacemaker processes.
Therefore the result of the command executed in STONITH plugin is outputted in LANG.

- pacemaker-1.1 : 8fb2c2f1a4 (the latest devel)
- glue : 54ec848c43
- RHEL6.3


I checked the environment variable LANG and LC_ALL of the Pacemaker processes.
In my environment, LANG is taken over to stonithd etc.

$ env | egrep 'LANG|LC_ALL'
LANG=ja_JP.UTF-8
$ service pacemaker start

$ cat /proc/`pidof pacemakerd`/environ | tr '\0' '\n' | egrep 'LANG|LC_ALL'
LANG=ja_JP.UTF-8
$ cat /proc/`pidof stonithd`/environ | tr '\0' '\n' | egrep 'LANG|LC_ALL'
LANG=ja_JP.UTF-8

As a result, for example, the result of the 'virsh' in libvirt (plugin) returns in Japanese.
 * http://hg.linux-ha.org/glue/file/54ec848c439e/lib/plugins/stonith/external/libvirt#l80
Therefore the subsequent 'egrep' never matches it. ('egrep' never returns 0 as exit status.)

There may be other similar problems..  How about the following patches?


a) set LC_ALL in /etc/init.d/pacemaker

 mcp/pacemaker.in |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/mcp/pacemaker.in b/mcp/pacemaker.in
index 1d71a04..ad12f6a 100644
--- a/mcp/pacemaker.in
+++ b/mcp/pacemaker.in
@@ -27,6 +27,7 @@ cman=0
 
 # set secure PATH
 PATH="/sbin:/bin:/usr/sbin:/usr/bin:@sbindir@"
+LC_ALL=C
 
 checkrc() {
     if [ $? = 0 ]; then


b) OR set LC_ALL in pacemakerd

 mcp/pacemaker.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/mcp/pacemaker.c b/mcp/pacemaker.c
index 08bd172..f06d306 100644
--- a/mcp/pacemaker.c
+++ b/mcp/pacemaker.c
@@ -804,6 +804,7 @@ main(int argc, char **argv)
     qb_ipcs_service_t *ipcs = NULL;
     const char *facility = daemon_option("logfacility");
 
+    setenv("LC_ALL", "C", 1);
     set_daemon_option("mcp", "true");
     set_daemon_option("use_logd", "off");
 

Best Regards,
Kazunori INOUE




More information about the Pacemaker mailing list