diff options
-rw-r--r-- | tests/bugs/replicate/bug-1325792.t | 25 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 5 |
2 files changed, 27 insertions, 3 deletions
diff --git a/tests/bugs/replicate/bug-1325792.t b/tests/bugs/replicate/bug-1325792.t new file mode 100644 index 00000000000..73190e5f341 --- /dev/null +++ b/tests/bugs/replicate/bug-1325792.t @@ -0,0 +1,25 @@ +#!/bin/bash +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +cleanup; + + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1,2,3} +TEST $CLI volume start $V0 + +TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 --entry-timeout=0 $M0; + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 0 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 1 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 2 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 3 + + +EXPECT 1 echo `$CLI volume heal $V0 statistics heal-count replica $H0:$B0/${V0}0 | grep -A 1 ${V0}0 | grep "entries" | wc -l` +EXPECT 1 echo `$CLI volume heal $V0 statistics heal-count replica $H0:$B0/${V0}1 | grep -A 1 ${V0}1 | grep "entries" | wc -l` +EXPECT 1 echo `$CLI volume heal $V0 statistics heal-count replica $H0:$B0/${V0}2 | grep -A 1 ${V0}2 | grep "entries" | wc -l` +EXPECT 1 echo `$CLI volume heal $V0 statistics heal-count replica $H0:$B0/${V0}3 | grep -A 1 ${V0}3 | grep "entries" | wc -l` + +cleanup diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 41a882a198d..502353f62b1 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -6281,13 +6281,11 @@ _select_hxlator_with_matching_brick (xlator_t *this, glusterd_volinfo_t *volinfo, dict_t *dict, int *index) { - char *hostname = NULL; char *path = NULL; glusterd_brickinfo_t *brickinfo = NULL; int hxl_children = 0; if (!dict || - dict_get_str (dict, "per-replica-cmd-hostname", &hostname) || dict_get_str (dict, "per-replica-cmd-path", &path)) return -1; @@ -6299,7 +6297,8 @@ _select_hxlator_with_matching_brick (xlator_t *this, if (gf_uuid_is_null (brickinfo->uuid)) (void)glusterd_resolve_brick (brickinfo); - if (!gf_uuid_compare (MY_UUID, brickinfo->uuid)) { + if ((!gf_uuid_compare (MY_UUID, brickinfo->uuid)) && + (!strncmp (brickinfo->path, path, strlen(path)))) { _add_hxlator_to_dict (dict, volinfo, ((*index) - 1)/hxl_children, 0); return 1; |