On 03/01/2015 10:58 AM, Emmanuel Dreyfus wrote:
Hi
I am trying to understand why read-subvol-entry.t almost always fail on
NetBSD. Here is how it goes:
- create a 2-brick replicated volume
- mkdir -p $M0/abc/def
- set:
self-heal-daemon off
stat-prefetch off
cluster.background-self-heal-count 0
cluster.data-self-heal off
cluster.metadata-self-heal off
cluster.entry-self-heal off
- kill brick0
- touch $M0/abc/def/ghi
- restart brick0
- check for ghi in ls $M0/abc/def/
How is it supposed to heal? If I understand correctly, the touch
$M0/abc/def/ghi causes AFR xtattr to be created on $M0/abc/def/ for the
operatione not done on brick0. Later the READDIR operation from ls
$M0/abc/def/ should cause AFR to notice the AFR xattr and perform the
heal.
I think I added the testcase for afr-v1 code. Since
cluster.{data/metadata/entry}self-heal is set to off,
lookup/readdir will *not* trigger heal in afr-v1. i.e. ghi would not be
created in brick0 despite the "EXPECT_WITHIN $PROCESS_UP_TIMEOUT "ghi"
echo `ls $M0/abc/def/`"
Thus what the test was checking is that in spite of not healing, the
client still got the correct data by reading from brick1.
In afr-v2, lookup does not trigger data/metadata/entry anyway. Only
'name' self-heals are done. i.e. ghi is created but its data and
metadata are not healed. These are taken care only by the self-heal-daemon.
In other words, client side healing in v2 is restricted to name
self-heals only.
HTH,
Ravi
Is it the way it should behave? If it is, then where is the relevant
code in xlator/cluster/afr/src ?
_______________________________________________
Gluster-devel mailing list
Gluster-devel@gluster.org
http://www.gluster.org/mailman/listinfo/gluster-devel