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 > [email protected] > http://www.gluster.org/mailman/listinfo/gluster-devel
_______________________________________________ Gluster-devel mailing list [email protected] http://www.gluster.org/mailman/listinfo/gluster-devel
