summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/replicate/bug-1325792.t25
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-op-sm.c5
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;