Re: Frequently updating static content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





2016-01-21 1:55 GMT+01:00 Yann Ylavic <ylavic.dev@xxxxxxxxx>:
On Wed, Jan 20, 2016 at 9:36 PM, David Rush <david.rush@xxxxxxx> 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




 

[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux