Could someone document ns_returnfp while we're talking about it? Titi Ala'ilima Lead Architect MedTouch LLC 1100 Massachusetts Avenue Cambridge, MA 02138 617.621.8670 x309
> -----Original Message----- > From: AOLserver Discussion [mailto:[EMAIL PROTECTED] On > Behalf Of Jim Davidson > Sent: Tuesday, August 19, 2008 8:39 PM > To: AOLSERVER@LISTSERV.AOL.COM > Subject: Re: [AOLSERVER] Data "corruption" with fastpath caching > > Your right, the code snippet below could trip over a race condition as > you've described. But, that's not reason enough to change the > fastpath, it's reason to better document the behavior so folks don't > write code that uses ns_returnfile for temporary, dynamic content. > Although fastpath takes care to be correct in most cases (e.g., > stat'ing the file on each request and serializing read on cache miss), > the "fast" in fastpath is because it's primarily designed to return > simple static content with minimal overhead. > > BTW: I believe the ns_returnfile command didn't use the fastpath > originally -- I think it just opened and sent the content. It was > changed because folks asked for it to go faster I think -- can't > recall. > > Anyway, for your app, it might be easiest to not change your code but > instead write a new ns_returnfile to override the builtin -- maybe > just with open and ns_returnfp. > > -Jim > > > > > On Aug 19, 2008, at 4:00 PM, John Caruso wrote: > > > On Monday 05:53 PM 8/18/2008, Jeff Rogers wrote: > >> russell muetzelfeldt wrote: > >>> fastpath is making assumptions about what means something is the > >>> "same file", and those assumptions are not consistent with unix > >>> filesystem semantics - how is this not a bug? > >> > >> It's not a bug because no one ever said that it *was* strictly > >> following unix filesystem semantics, which isn't even a single > >> thing (ufs is slightly different than nfs, is slightly different > >> than ext2 -noatime, is slightly different than afs, etc.) It is > >> following a particular definition: if the file still exists and has > >> the same dev/inode/mtime/size as it did when you last checked, then > >> it is the same file. This of it as a if-modified-since or if-none- > >> match conditional GET. > > > > Actually that's not analogous, for the same reason that the > > analogies to caching of attributes in NFS, rsync or tar not noticing > > content changes if attributes stay the same, etc, don't apply: > > because this bug can happen *even with two files that have > > completely different names or paths*. Again, in this example...: > > > > set file [open "/var/tmp/myfile" "w"] > > puts $file "ABC123" > > close $file > > ns_returnfile 200 text/plain "/var/tmp/myfile" > > ns_unlink -nocomplain "/var/tmp/myfile" > > > > set file [open "/var/tmp/myotherfile" "w"] > > puts $file "XYZ987" > > close $file > > ns_returnfile 200 text/plain "/var/tmp/myotherfile" > > ns_unlink -nocomplain "/var/tmp/myotherfile" > > > > ...AOLserver will almost always return the contents of /var/tmp/ > > myfile rather than /var/tmp/myotherfile in response to the second > > ns_returnfile. > > > > I think the analogies to other systems aren't really germane anyway-- > > AOLserver's behavior has to be judged on its own merits. But > > adopting that standard, I can't think of any other program that > > would confuse /var/tmp/myfile with /var/tmp/myotherfile. > > > > - John > > > > > > -- > > AOLserver - http://www.aolserver.com/ > > > > To Remove yourself from this list, simply send an email to > <[EMAIL PROTECTED] > > > with the > > body of "SIGNOFF AOLSERVER" in the email message. You can leave the > > Subject: field of your email blank. > > > -- > AOLserver - http://www.aolserver.com/ > > To Remove yourself from this list, simply send an email to > <[EMAIL PROTECTED]> with the > body of "SIGNOFF AOLSERVER" in the email message. You can leave the > Subject: field of your email blank. -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.