The values for If-None-Match and If-Match are totally random. They don't show up anywhere in the cache or anywhere else in the HTTP dump. In fact, even the initial requests to /beta/ have a random If-None-Match.
If I clear the cache, I don't send any If-None-Match headers, but eventually I do send a random If-Match and I get the same error.
I've finally been able to duplicate this. Here's a very edited HTTP dump that shows the problem
=== 650b625b8172b22 5368bfeecb2" (???)
GET /beta/bugs/353805 HTTP/1.1
if-none-match: "7f7f5e3c50396d
HTTP/1.1 200 Ok 334f1fbaf4ca2ca 94fbd2a949a" lib/+bug/ 353805 HTTP/1.1 8755c4ac50c19ac c76667e3bdb" (???)
Etag: "3c1d2fa23419ec
---
PATCH /beta/launchpad
if-match: "34ed5fed814bac
HTTP/1.1 412 Precondition Failed
===
The values for If-None-Match and If-Match are totally random. They don't show up anywhere in the cache or anywhere else in the HTTP dump. In fact, even the initial requests to /beta/ have a random If-None-Match.
If I clear the cache, I don't send any If-None-Match headers, but eventually I do send a random If-Match and I get the same error.