glusterd: To find a compatible brick ignore diagnostics.brick-log-level option

Problem: glusterd start a volume as a separate process instead of
         attaching with the already running process if volume option has
         different brick-log-level. There is no functionality impact on a brick
         if the option has different brick-log-level so glusterd
         should attach a brick with the already running process.

Solution: Ignore brick-log-level option in unsafe_option

BUG: 1599628
Change-Id: I72638ff2026fcd9332bc38e1144b1ef4a708820b
fixes: bz#1599628
Signed-off-by: Mohit Agrawal <moagrawal@redhat.com>
This commit is contained in:
Mohit Agrawal 2018-07-10 14:21:35 +05:30 committed by Atin Mukherjee
parent e8cf52f510
commit 1718f9c6cb
2 changed files with 13 additions and 0 deletions

View File

@ -15,6 +15,11 @@ function count_processes {
pgrep glusterfsd | wc -w
}
function count_brick_pids {
$CLI --xml volume status all | sed -n '/.*<pid>\([^<]*\).*/s//\1/p' \
| grep -v "N/A" | sort | uniq | wc -l
}
cleanup
TEST glusterd
TEST $CLI volume set all cluster.brick-multiplex yes
@ -25,6 +30,9 @@ push_trapfunc "cleanup"
TEST $CLI volume create $V0 $H0:$B0/brick-${V0}-{0,1}
TEST $CLI volume create $V1 $H0:$B0/brick-${V1}-{0,1}
# Enable brick log-level to DEBUG
gluster v set $V0 diagnostics.brick-log-level DEBUG
# Start both.
TEST $CLI volume start $V0
TEST $CLI volume start $V1
@ -34,6 +42,7 @@ TEST $CLI volume start $V1
# coming up, and yield a false positive.
sleep $PROCESS_UP_TIMEOUT
EXPECT "1" count_processes
EXPECT 1 count_brick_pids
# Make the second volume incompatible with the first.
TEST $CLI volume stop $V1

View File

@ -2330,6 +2330,10 @@ unsafe_option (dict_t *this, char *key, data_t *value, void *arg)
return _gf_false;
}
if (fnmatch ("*diagnostics.brick-log*", key, 0) == 0) {
return _gf_false;
}
return _gf_true;
}