[ https://issues.apache.org/jira/browse/COUCHDB-3017?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Will Holley resolved COUCHDB-3017. ---------------------------------- Resolution: Fixed Fix Version/s: 2.0.0 Verified fixed in master > CouchDB 2.0: passing an invalid ETag to _changes incorrectly returns 304 Not > Modified > -------------------------------------------------------------------------------------- > > Key: COUCHDB-3017 > URL: https://issues.apache.org/jira/browse/COUCHDB-3017 > Project: CouchDB > Issue Type: Bug > Affects Versions: 2.0.0 > Reporter: Will Holley > Fix For: 2.0.0 > > > I discovered this issue whilst running the PouchDB test suite against CouchDB > 2.0 (in a cluster of 1). It's a bit of an edge case but, essentially, the > steps to reproduce are: > 1. create a database /foo > 2. insert 2 empty documents with _ids "a" and "b" > 3. call /foo/_changes?limit=1. Note the ETag returned in the response > 4. delete /foo > 5. recreate database /foo > 6. insert 2 empty documents with _ids "a" and "b" > 7. call /foo/_changes?limit=1, passing an "If-None-Match" header using the > ETag value captured in (3) > 8. CouchDB 2.0 returns a 304 Not Modified response - CouchDB 1.6 returns a > 200 and ignores the If-None-Match value > The problem for the client is that it would use the cached value from (3) > which is invalid for this recreated database. > A full reproduction is at > https://gist.github.com/willholley/c5f4c30fce822dc7dc48cbc8875c394b with the > CouchDB 1.6 equivalent at > https://gist.github.com/willholley/c0b9c6cf2a62090ac3bee4fa549644bd. > Bob Newson suggested that this was likely down to CouchDB 1.6 using the > instance_start_time when calculating the ETag for _changes, invaliding > previously returned ETags if a database is deleted and recreated with the > same parameters. In 2.0, instance_start_time is always 0 so we need to use a > different property to ensure unique ETags per database instance (e.g. the > unique shard suffix). -- This message was sent by Atlassian JIRA (v6.3.4#6332)