httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luca Toscano <toscano.l...@gmail.com>
Subject Re: [users@httpd] Frequently updating static content
Date Thu, 21 Jan 2016 03:58:45 GMT
2016-01-21 1:55 GMT+01:00 Yann Ylavic <ylavic.dev@gmail.com>:

> On Wed, Jan 20, 2016 at 9:36 PM, David Rush <david.rush@wyo.gov> wrote:
>
> > What happens if it's updated (re-created) at the same instant that it's
> > being requested?
>
> This should be handled carefuly, the updater and the server should not
> race on the content of the file but on the file (inode) itself.
>
> You could first create the new file with an extension (e.g. ".tmp")
> and then rename it to the served file using "mv -f servedfile.tmp
> servedfile", which is usually atomic on Unixes (at least Linux and
> BSDs afaict).
>

+1

The only issue that I can think of are slow clients requesting the content
of "servedfile" at some point X in time, finishing to receive it from httpd
at say X+4, meanwhile the new "servedfile" is created at X+2 (so the slow
client should get the correct content without any glitch/error/etc..).

With Yann's suggestion the slow client will keep receiving the right
content even after the move from servedfile.tmp (new file) to servedfile
because a file descriptor opened to the old servedfile's inode (held by
httpd) will prevent the kernel to mark it as garbage (this of course on
Unixes where the move is atomic and the kernel honors inodes in that way).
New clients will get correctly the new content meanwhile the slow/unlucky
ones won't experience any inconsistency.

 Luca

Mime
View raw message