<div dir="ltr"><div>hi,<br></div>        I wanted to remove &#39;get_new_dict()&#39;, &#39;dict_destroy()&#39; usage through out the code base to prevent people from using it wrong. Regression for that patch <a href="http://review.gluster.org/13183">http://review.gluster.org/13183</a> kept failing and I found that the &#39;xl-&gt;options&#39; dictionary is created using get_new_dict() i.e. it doesn&#39;t have any refs. And in xlator_members_free() we try to destroy it using dict_unref() i.e. ref count becomes &#39;-1&#39; and the dictionary doesn&#39;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 &#39;xl-&gt;reconfigured_options&#39; 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&#39;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(&#39;fini&#39; should GF_FREE all these options), so wondering if anyone has any other thoughts on fixing this properly without a lot of code changes.<br clear="all"><div><div><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Pranith<br></div></div>
</div></div></div>