diff options
author | kshithijiyer <kshithij.ki@gmail.com> | 2020-04-24 18:46:14 +0530 |
---|---|---|
committer | Bala Konda Reddy M <bala12352@gmail.com> | 2020-04-27 05:53:26 +0000 |
commit | 83afdf79df7ef3bd5c4557fdacc58e4513d76438 (patch) | |
tree | 829219f167b95b24fcaee3990642f9596d048ff5 /glustolibs-gluster/glustolibs/gluster/brickmux_ops.py | |
parent | 568ce66ba3c79604e5b5428f51abe99e9d968e63 (diff) |
[Libfix] Fix get_brick_processes_count() to use pgrep
Problem:
On latest platforms pidof command is returning
multiple pids as shown below:
27190 27078 26854
This is becasue it was returning glusterd,glusterfsd
and glusterfs processes as well. The problem is that
/usr/sbin/glusterd is a link to glusterfsd.
'pidof' has a new feature that pidof searches for
the pattern in /proc/PID/cmdline, /proc/PID/stat and
finally /proc/PID/exe. Hence pidof matches realpath
of /proc/<pid_of_glusterd>/exe as /usr/sbin/glusterfsd
and results in glusterd, glusterfs and glusterfsd pids
being returned in output.
Fix:
Use pgrep instead of pidof to get glusterfsd
pids. And change the split logic accordingly.
Change-Id: Ie215734387989f2d8cb19e4b4f7cddc73d2a5608
Signed-off-by: kshithijiyer <kshithij.ki@gmail.com>
Diffstat (limited to 'glustolibs-gluster/glustolibs/gluster/brickmux_ops.py')
-rwxr-xr-x | glustolibs-gluster/glustolibs/gluster/brickmux_ops.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/glustolibs-gluster/glustolibs/gluster/brickmux_ops.py b/glustolibs-gluster/glustolibs/gluster/brickmux_ops.py index eeb4e2a50..3defdba8a 100755 --- a/glustolibs-gluster/glustolibs/gluster/brickmux_ops.py +++ b/glustolibs-gluster/glustolibs/gluster/brickmux_ops.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright (C) 2017-2019 Red Hat, Inc. <http://www.redhat.com> +# Copyright (C) 2017-2020 Red Hat, Inc. <http://www.redhat.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -149,8 +149,10 @@ def get_brick_processes_count(mnode): int: Number of brick processes running on the node. None: If the command fails to execute. """ - ret, out, _ = g.run(mnode, "pidof glusterfsd") + ret, out, _ = g.run(mnode, "pgrep -x glusterfsd") if not ret: - return len(out.split(" ")) + list_of_pids = out.split("\n") + list_of_pids.pop() + return len(list_of_pids) else: return None |