3
. $(dirname $0)/../../include.rc
4
. $(dirname $0)/../../volume.rc
9
TEST $CLI volume create $V0 replica 3 $H0:$B0/brick{0,1,2}
10
TEST $CLI volume set $V0 heal-timeout 5
11
TEST $CLI volume start $V0
12
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_in_shd $V0 0
13
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_in_shd $V0 1
14
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_in_shd $V0 2
15
TEST $CLI volume heal $V0 granular-entry-heal enable
17
TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0
18
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 0
19
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 1
20
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 2
25
# Re-create the file when a brick is down.
26
TEST kill_brick $V0 $H0 $B0/brick1
27
EXPECT_WITHIN $PROCESS_DOWN_TIMEOUT 2 online_brick_count
29
echo "New Data">$M0/FILE
32
EXPECT_WITHIN $HEAL_TIMEOUT "4" get_pending_heal_count $V0
34
# Launching index heal must not reset parent dir afr xattrs or remove granular entry indices.
35
$CLI volume heal $V0 # CLI will fail but heal is launched anyway.
36
TEST sleep 5 # give index heal a chance to do one run.
37
brick0_pending=$(get_hex_xattr trusted.afr.$V0-client-1 $B0/brick0/)
38
brick2_pending=$(get_hex_xattr trusted.afr.$V0-client-1 $B0/brick2/)
39
TEST [ $brick0_pending -eq "000000000000000000000002" ]
40
TEST [ $brick2_pending -eq "000000000000000000000002" ]
41
EXPECT "FILE" ls $B0/brick0/.glusterfs/indices/entry-changes/00000000-0000-0000-0000-000000000001/
42
EXPECT "FILE" ls $B0/brick2/.glusterfs/indices/entry-changes/00000000-0000-0000-0000-000000000001/
44
TEST $CLI volume start $V0 force
45
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V0 $H0 $B0/brick1
46
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status_in_shd $V0 1
48
EXPECT_WITHIN $HEAL_TIMEOUT "0" get_pending_heal_count $V0
50
# No gfid-split-brain (i.e. EIO) must be seen. Try on fresh mount to avoid cached values.
51
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0
52
TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0
53
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 0
54
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 1
55
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 2
58
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0