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.
_______________________________________________
Gluster-devel mailing list
Gluster-devel@xxxxxxxxxxx
http://www.gluster.org/mailman/listinfo/gluster-devel
|
_______________________________________________
Gluster-devel mailing list
Gluster-devel@xxxxxxxxxxx
http://www.gluster.org/mailman/listinfo/gluster-devel