<div dir="ltr">Hello.<div><br></div><div>So is it not allowed that we reload a configuration after change load_module directive?</div><div><br></div><div>But it seems probably happened that others guys reload nginx, since they don't know</div><div>whether load_module changes.</div><div><br></div><div>I mean we should upgrade after change so files, but it's easy to get a segmentation fault</div><div>if some other guy run a reload command at that time.</div><div><br></div><div>B.R.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-30 21:05 GMT+08:00 Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<span class=""><br>
On Tue, Aug 30, 2016 at 08:46:42PM +0800, 洪志道 wrote:<br>
<br>
> Thanks a lot for your reply.<br>
><br>
> First, we want to manage the module versions, such as<br>
> ngx_http_abc_module_1.so, ngx_http_abc_module_2.so.<br>
> Maybe you can share a better way.<br>
><br>
> Second:<br>
> "Note that when writing module *.so files care should be taken to<br>
> not modify contents of files currently loaded" -- I get, but we didn't.<br>
><br>
><br>
> The above problem I described is:<br>
><br>
> load_module  modules/ngx_http_abc_module_2.<wbr>so;  # it runs well before<br>
> upgrading<br>
><br>
><br>
> Then we upgrade module named ngx_http_abc_module_3.so<br>
> [ make install: generate new file ngx_http_abc_module.so; cp<br>
> ngx_http_abc_module.so ngx_http_abc_module_3.so]<br>
><br>
> Then change config<br>
><br>
> load_module modules/ngx_http_abc_module_3.<wbr>so;<br>
><br>
> Finally we upgrade nginx: -USR2 && sleep && -QUIT old<br>
<br>
</span>As long as you use upgrade via USR2 signal this process should be<br>
fine.  Note though, that if you'll try to reload a configuration<br>
instead of upgrade, you'll likely get a segmentation fault as<br>
well, since there will be multiple conflicting symbols for your<br>
module loaded at the same time.<br>
<br>
Overral I would recommend you to avoid using such distinct *.so<br>
names as it looks very fragile.<br>
<br>
If you want to store module version somewhere, consider just<br>
adding a symbol with appropriate information to the module itself.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" rel="noreferrer" target="_blank">http://nginx.org/</a><br>
<br>
______________________________<wbr>_________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" rel="noreferrer" target="_blank">http://mailman.nginx.org/<wbr>mailman/listinfo/nginx-devel</a></div></div></blockquote></div><br></div>