diff options
author | Ravishankar N <ravishankar@redhat.com> | 2015-05-21 15:43:35 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2015-05-22 02:32:27 -0700 |
commit | dbad74f1e739c6d1f48b8af392c1eee1a7254015 (patch) | |
tree | e0417c089bdd9de9ebc4deaa203d9e58ff39bd09 /tests/basic | |
parent | 173c7b542939b95a72f30ba2ce1342af62b73f37 (diff) |
tests: data-self-heal.t fix
Use Index heal instead of full heal to heal files because if both bricks are on
the same node, the 2 full heal threads might compete and fail to acquire the non
blocking locks and the file might not get healed during the full heal crawl.
Change-Id: I3b9e2de7b0366b4bc40b54314807ef165baad68f
BUG: 1163543
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: http://review.gluster.org/10875
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'tests/basic')
-rw-r--r-- | tests/basic/afr/data-self-heal.t | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/basic/afr/data-self-heal.t b/tests/basic/afr/data-self-heal.t index 06568678dbf..5db5d770b6f 100644 --- a/tests/basic/afr/data-self-heal.t +++ b/tests/basic/afr/data-self-heal.t @@ -3,8 +3,24 @@ . $(dirname $0)/../../include.rc . $(dirname $0)/../../volume.rc +. $(dirname $0)/../../afr.rc cleanup; +function create_xattrop_entry { + local xattrop_dir0=$(afr_get_index_path $B0/brick0) + local xattrop_dir1=$(afr_get_index_path $B0/brick1) + local base_entry_b0=`ls $xattrop_dir0` + local base_entry_b1=`ls $xattrop_dir1` + local gfid_str + + for file in "$@" + do + gfid_str=$(gf_gfid_xattr_to_str $(gf_get_gfid_xattr $B0/brick0/$file)) + ln $xattrop_dir0/$base_entry_b0 $xattrop_dir0/$gfid_str + ln $xattrop_dir1/$base_entry_b1 $xattrop_dir1/$gfid_str + done +} + function is_heal_done { local f1_path="${1}/${3}" local f2_path="${2}/${3}" @@ -138,9 +154,17 @@ TEST "echo def > $B0/brick1/v1-dirty.txt" TEST setfattr -n trusted.afr.$V0-client-0 -v 0x000000200000000000000000 $B0/brick0/v1-dirty.txt TEST setfattr -n trusted.afr.$V0-client-1 -v 0x000000100000000000000000 $B0/brick1/v1-dirty.txt -TEST stat pending-changelog biggest-file-source.txt biggest-file-more-prio-than-changelog.txt same-size-more-prio-to-changelog.txt size-and-witness-same.txt self-accusing-vs-source.txt self-accusing-both.txt self-accusing-vs-innocent.txt self-accusing-bigger-exists.txt size-more-prio-than-self-accused.txt v1-dirty.txt +#Create base entry in indices/xattrop +echo "Data" > $M0/FILE +rm -f $M0/FILE +EXPECT "1" count_index_entries $B0/brick0 +EXPECT "1" count_index_entries $B0/brick1 cd - -TEST $CLI volume heal $V0 full + +#Create gfid hard links for all files before triggering index heals. +create_xattrop_entry pending-changelog biggest-file-source.txt biggest-file-more-prio-than-changelog.txt same-size-more-prio-to-changelog.txt size-and-witness-same.txt self-accusing-vs-source.txt self-accusing-both.txt self-accusing-vs-innocent.txt self-accusing-bigger-exists.txt size-more-prio-than-self-accused.txt v1-dirty.txt + +TEST $CLI volume heal $V0 EXPECT_WITHIN $HEAL_TIMEOUT "~" print_pending_heals pending-changelog biggest-file-source.txt biggest-file-more-prio-than-changelog.txt same-size-more-prio-to-changelog.txt size-and-witness-same.txt self-accusing-vs-source.txt self-accusing-both.txt self-accusing-vs-innocent.txt self-accusing-bigger-exists.txt size-more-prio-than-self-accused.txt v1-dirty.txt EXPECT "N" is_heal_done $B0/brick0 $B0/brick1 split-brain.txt EXPECT "N" is_heal_done $B0/brick0 $B0/brick1 split-brain-all-dirty.txt |