On 24.04.2008, at 15:47, Michael Wallner wrote:
David Zülke wrote:
There was a report, yup, filed it myself :)
It has been fixed in trunk as part of the mochiweb merge, apparently:
https://issues.apache.org/jira/browse/COUCHDB-13

Reads like it should be fixed, but seems like CouchDB doesn't send any
ETags anymore:
[...]
GET /phpunit_test1/3a801ba5a1b9df16a0cb4143c7839461?rev=2903083097 HTTP/1.1
User-Agent: PECL::HTTP/1.6.1-dev (PHP/5.3.0-dev)
Host: localhost:5984
Accept: */*
HTTP/1.1 200 OK
Server: MochiWeb/1.0 (Any of you quaids got a smint?)
Date: Thu, 24 Apr 2008 13:42:31 GMT
Content-Type: text/plain;charset=utf-8
X-Original-Transfer-Encoding: chunked
Content-Length: 62

{"_id":"3a801ba5a1b9df16a0cb4143c7839461","_rev":"2903083097"}

CouchDB now only sends Etags on document requests if the request URL doesn't specify any query string parameters. The rationale behind that is that some parameters, such as `revs_info`, can result in a different JSON value even for the same URI and document revision.

For example, you request a specific rev of a document with `? rev=123456&revs_info=true`; the next time you request the same resource, a new revision might have been added, which means the revision info in the JSON response will have a new entry, and thus the previously retrieved resource is no longer up to date. But if we added the revision as Etag to the response, caches will not know that the cached version is out of date. So for now CouchDB simply omits the Etag for any query string params.

In the future, it should be more intelligent, and only omit the Etag for "problematic" options. I.e. for a request with just a `? rev=123456` param, we should ideally still be including an Etag.

Cheers,
--
Christopher Lenz
  cmlenz at gmx.de
  http://www.cmlenz.net/

Reply via email to