Inconsistent output of 'mogadm domain list' encountered
dormando
dormando at rydia.net
Wed Mar 19 07:00:16 UTC 2008
Fixed both instances in trunk...
They were trivial changes (although I put the cache clear in a different
place), but I might not have totally understood the original goals of
the singleton caches. Feel free to berate my fail :)
Also haven't figured a decent test, since the issue tends to happen in
parallel processes. Any ideas?
-Dormando
Frank Ng wrote:
> We see the same thing in our test mogilefs env. i made a change of
> mindevcount from 2 to 3 and ran mogadm class list a few times, it's show
> alternating results.
>
> [root at xxx mogdata]# mogadm class list
> domain class mindevcount
> -------------------- -------------------- -------------
> snf_test01 default 2
> snf_test01 snf_hr 2
> snf_test01 snf_lr 3 <--
>
> [root at xxx mogdata]# mogadm class list
> domain class mindevcount
> -------------------- -------------------- -------------
> snf_test01 default 2
> snf_test01 snf_hr 2
> snf_test01 snf_lr 2 <--
>
> [root at xxx mogdata]# mogadm domain list
> domain class mindevcount
> -------------------- -------------------- -------------
> snf_test01 default 2
> snf_test01 snf_hr 2
> snf_test01 snf_lr 2 <--
>
> [root at xxx mogdata]# mogadm domain list
> domain class mindevcount
> -------------------- -------------------- -------------
> snf_test01 default 2
> snf_test01 snf_hr 2
> snf_test01 snf_lr 3 <--
>
>
> On Wed, Mar 12, 2008 at 3:58 AM, Chaos Wang <chaoslawful at gmail.com
> <mailto:chaoslawful at gmail.com>> wrote:
>
> Hi,
>
> I use the MogileFS code from official svn trunk to do some test. But
> when I do some domain addition/deletion operations, the output of
> 'mogadm domain list' becomes inconsistent between different calls.
> This phenomenon can be repeated by following steps:
>
> 1. mogadm domain add xxx
> 2. mogadm domain delete xxx
> 3. mogadm domain add yyy
> 4. mogadm domain list (several times)
>
> I thinks the problem is in the invalidate_cache() method in
> MogileFS::Domain module, because it forget to clean up the hash map
> %singleton (of_dmid(), which is called in domains(), used this hash
> map before trying %id2name map). After made the following changes in
> MogileFS::Domain::invalidate_cache(), the phenomenon doesn't show up
> again:
>
> --code begin--
> sub invalidate_cache {
> ...
> %id2name=();
> %name2id=();
> %singleton=(); # XXX: this is newly added
> ...
> --code end--
>
> And I have another question: does classes belong to certain domain?
> If so, why delete a domain does not clean up the classes under it?
>
>
More information about the mogilefs
mailing list