[Gluster-devel] volfile init/reconfigure have been working by accident?

Mohammed Rafi K C rkavunga at redhat.com
Thu Jul 14 12:12:48 UTC 2016


How about storing the same data variable(from new_xl options dict) with
a ref in the  options dictionary of old xlator.

Regards
Rafi KC

On 07/14/2016 08:28 AM, Pranith Kumar Karampuri wrote:
> hi,
>         I wanted to remove 'get_new_dict()', 'dict_destroy()' usage
> through out the code base to prevent people from using it wrong.
> Regression for that patch http://review.gluster.org/13183 kept failing
> and I found that the 'xl->options' dictionary is created using
> get_new_dict() i.e. it doesn't have any refs. And in
> xlator_members_free() we try to destroy it using dict_unref() i.e. ref
> count becomes '-1' and the dictionary doesn't get destroyed. so every
> reconfigure is leaking dictionaries. So all the options which use
> string options actually point to the values in these dictionaries.
> Initially I thought we can have latest reconfigured options dictionary
> also stored in new member 'xl->reconfigured_options' but the problem
> is reconfigure can partially succeed leading to dilemma about which
> options succeeded/failed and which dictionary to keep around. Failing
> in reconfigure doesn't stop the brick. At the moment the only way out
> I see is to perform [de]allocation of the string, bool(we can prevent
> for bool) options, may be there are more, I need to check. But this
> becomes one more big patch('fini' should GF_FREE all these options),
> so wondering if anyone has any other thoughts on fixing this properly
> without a lot of code changes.
>
> -- 
> Pranith
>
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at gluster.org
> http://www.gluster.org/mailman/listinfo/gluster-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gluster.org/pipermail/gluster-devel/attachments/20160714/d8fbf16f/attachment.html>


More information about the Gluster-devel mailing list