[PATCH] Allow binary upgrades in Solaris zones
Maxim Dounin
mdounin at mdounin.ru
Fri Jan 7 05:57:58 MSK 2011
Hello!
On Thu, Jan 06, 2011 at 04:45:55PM +0000, doug at hcsw.org wrote:
> Hi Maxim,
>
> On Thu, Jan 06, 2011 at 02:53:36AM +0300 or thereabouts, Maxim Dounin wrote:
> > Yes, nginx checks if previous upgrade was finished by checking
> > parent pid to be 1.
>
> Thank you for your explanation about this.
>
> Does it also have something to do with preventing an upgrade when running
> nginx under daemontools?
>
> "If you never did online upgrade before, this may mean that you run nginx
> under daemontools/etc. Thus online upgrade is not available in this case."
>
> http://nginx.org/pipermail/nginx/2008-June/005678.html
With daemontools nginx binary upgrade will leave daemontools
thinking nginx was terminated (and actually it was - but started
another one before this), so it won't work anyway.
Running daemonized nginx though fghack[1] may help (usual
restrictions apply, i.e. daemontools won't be able to send
signals).
[1] http://cr.yp.to/daemontools/faq/create.html#fghack
> > I don't really like this aproach, it looks fragile and actually
> > adds another non-portable hack instead of fixing original
> > non-portability.
>
> I agree it is a hack that relies on non-standard behaviour but I disagree
> that it is fragile. My logic behind the patch was that it should:
>
> 1) Use only standard unix syscalls so as to not break compilation on any
> platforms.
>
> 2) Revert to the current behaviour and refuse upgrade if init process not
> being visible inside zones does not apply.
Your patch relies on the following assumptions:
1. Process with pid 1 is visible if it's used as "default parent".
2. Process with pid 1 isn't visible if it's not used as "default
parent".
Both may easily become false.
> > Probably passing real parent pid from old binary and checking if
> > getppid() [doesn't] match whould be better aproach (at least, it
> > should be portable).
>
> Now that I understand the purpose behind this test better I agree this
> would be a better solution. I will look into creating a patch that
> implements this approach and post my results here.
That would be great, thanks.
Maxim Dounin
More information about the nginx-devel
mailing list