- From: Dan Brotsky <dbrotsky@adobe.com>
- Date: Tue, 20 Dec 2005 22:03:31 -0800
- To: "Julian Reschke" <julian.reschke@gmx.de>
- Cc: Wilfredo Sánchez Vega <wsanchez@wsanchez.net>, "Jim Whitehead" <ejw@soe.ucsc.edu>, "WebDav WG" <w3c-dist-auth@w3.org>
> Depends on what the target platform is. Apache is built on > top of APR, (Apache Portable Runtime) as I recall, and that > API may not have a guarantee of a higher timer resolution. > What would be your proposal to the Apache guys how to handle that? I gave one below. > Second, even in filesystems with millisecond resolutions, > all the filesystem has to do is support exclusive > write-locking and you can build a compliant server. The > server must simply keep the file locked long enough to avoid > the milllisecond window and then set the time back to the > write time in order to ensure that any interference is noticeable. > > You mean "second" resolution, right? No, I meant millisecond. Perhaps you are sugggesting that APR only supports 1-second resolution? Why would that be? I know of no filesystems with that kind of resolution. > Two problems here: > > 1) Doing that may not be acceptable for mass uploads, where > millions of documents need to be uploaded (don't tell me this > isn't a use case...). Sure it's a use case. But you don't explain why it's not acceptable. > > 2) Even then, it's not that simple. ETag and Last-Modified > also have to be adjusted after COPY and notably MOVE (!). It's exactly that simple. Because COPY and MOVE don't suffer the non-interference problem (on the target, that is), because the target doesn't exist for someone to have open. > > I don't have any problem with a standard that can't be > implemented in the simplest possible way against the weakest > possible resources. All we are saying is that, if you really > have a filesystem that allows multiple writers to interfere > with one another undetectably, then you can't build a > compliant WebDAV server against that filesystem. And that's > just a fact: the server certainly can't guarantee anything > without support from the filesystem. > > I disagree with the statement that this kind of server is > non-compliant. > Are you saying that Apache/moddav is non-compliant? I have no opinion about this. If I were working on Apache I never would have been returning weak etags in the first place. I would be putting together the timestamp and filesize returned by the fs and using that as the etag in the first place. If someone complained that they ran into a case where some other process wrote the file at exactly the same millisecond and exactly the same size and I reported the same etag when in fact they claimed the content was different, then I would say "whoops, sorry, that's a bug, and it's a never-fix bug because the use cases where it's a problem so rare and so hard to fix (see pain-in-the-rear solution above) that it's not worth fixing. If you want to make that bug go away use a real filesystem with microsecond resolution for your server." > > >> Absent a workable solution, we're going to be moving > Apache into > >> the non-compliant category if this is a MUST-level requirement. > > > > I think there are many workable solutions over standard > filesystems for this problem. > > This discussion isn't new. As a matter of fact, it started at > least two years ago. As of now, nothing in Apache/moddav has > changed. I take that as indication that changing the server > may not be as trivial as some people think. No, I take that as an indication that everyone agrees that this bug is only there conceptually and that it never actually occurs in the field. I know for a fact that the Adobe client implementations just ignored the weak marking on the etag and that's why they were interoperable with Apache. > > So, Dan, can you make a concrete proposal how to change Apache/moddav? Yes: stop returning weak etags. See above. dan
Received on Wednesday, 21 December 2005 06:03:55 UTC