-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi guys,
I have a big problem here. Very often my unit tests fail. I have asked
about this problem some time ago - but couldn't find that thread
anymore...
I have upgrade couchdb to 1.2.0 and run Wireshark to locate the problem.
Ok. I am uploading my design documents before each unit tests.
Sometimes (about 1 in 100) I get an 409 from couchdb.
The problem is, that there are two PUTs instead of just one. Of course
the second one fails with a 409.
But my client is *not* aware that it is sending the request twice.
Here is the relevant part of the couchdb.log:
[Sat, 26 May 2012 09:52:59 GMT] [info] [<0.23835.0>] 127.0.0.1 - - GET
/collustra_test$attachments/_design/rating 404
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23835.0>] httpd 404 error
response:
{"error":"not_found","reason":"missing"}
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23813.0>] 'PUT'
/collustra_test$attachments/_design/rating {1,1} from "127.0.0.1"
Headers: [{'Accept',"text/html, image/gif, image/jpeg, *; q=.2, */*;
q=.2"},
{'Connection',"keep-alive"},
{'Content-Length',"4910"},
{'Content-Type',"text/plain"},
{'Host',"localhost:5984"},
{"Millis","1338025979060"},
{'User-Agent',"Java/1.6.0_26"}]
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23813.0>] OAuth Params: []
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23836.0>] 'PUT'
/collustra_test$attachments/_design/rating {1,1} from "127.0.0.1"
Headers: [{'Accept',"text/html, image/gif, image/jpeg, *; q=.2, */*;
q=.2"},
{'Connection',"keep-alive"},
{'Content-Length',"4910"},
{'Content-Type',"text/plain"},
{'Host',"localhost:5984"},
{"Millis","1338025979060"},
{'User-Agent',"Java/1.6.0_26"}]
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23836.0>] OAuth Params: []
[Sat, 26 May 2012 09:52:59 GMT] [info] [<0.23813.0>] 127.0.0.1 - - PUT
/collustra_test$attachments/_design/rating 201
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23836.0>] Minor error in
HTTP request: conflict
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23836.0>] Stacktrace:
[{couch_db,update_doc,4,
[{file,
"/tmp/a/build-couchdb/dependencies/couchdb/src/couchdb/couch_db.erl"},
{line,429}]},
{couch_httpd_db,update_doc,6,
[{file,
"/tmp/a/build-couchdb/dependencies/couchdb/src/couchdb/couch_httpd_db.erl"},
{line,931}]},
{couch_httpd_db,do_db_req,2,
[{file,
"/tmp/a/build-couchdb/dependencies/couchdb/src/couchdb/couch_httpd_db.erl"},
{line,230}]},
{couch_httpd,handle_request_int,5,
[{file,
"/tmp/a/build-couchdb/dependencies/couchdb/src/couchdb/couch_httpd.erl"},
{line,317}]},
{mochiweb_http,headers,5,
[{file,
"/tmp/a/build-couchdb/dependencies/couchdb/src/mochiweb/mochiweb_http.erl"},
{line,136}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,227}]}]
[Sat, 26 May 2012 09:52:59 GMT] [info] [<0.23836.0>] 127.0.0.1 - - PUT
/collustra_test$attachments/_design/rating 409
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23836.0>] httpd 409 error
response:
{"error":"conflict","reason":"Document update conflict."}
[Sat, 26 May 2012 09:52:59 GMT] [debug] [<0.23837.0>] 'GET'
/collustra_test$attachments {1,1} from "127.0.0.1"
Headers: [{'Accept',"text/html, image/gif, image/jpeg, *; q=.2, */*;
q=.2"},
{'Connection',"keep-alive"},
{'Host',"localhost:5984"},
{'User-Agent',"Java/1.6.0_26"}]
Now that seems to be very obvious...
But: On the client side I see just *1* PUT. I am using Jersey Client
API (Java).
Wiresharks shows that there are - in fact - two PUT.
But there is *no* response on the first PUT. Instead there are several
TCP errors (RST, ACK).
http://pastebin.com/17jV8MnA
So I have:
Client (Jersey): PUT
Wireshark: PUT, Errors but no response, PUT, response
CouchdB: PUT, (No Response?), PUT, Response
So I think the problem is, that the response to the first PUT is lost
somewhere - but executed successfully. And my client resends the
request and gets the 409...
So my question is basically: Does anybody have an idea how/why the
response is lost?
Thanks,
Johannes
- --
Johannes Schneider - blog.cedarsoft.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAEBAgAGBQJPwL+iAAoJEAytD9R7Qv6d7c0IAMesCF/DZC91QA/uqm1v3rec
a8+npFGbvi0IhvMngJUKJtdCcAixn4FNQOoHeqY8HZf0BW5aHLtryk2/YzVzT4kg
5WG3FqdSqCCen92xfq0or+L5kRiC4D5U/jN1ZwFH5+LpyXyW6OQJ0N8kref8oDCh
WTJsvJVj1QKM5XQo6HcnCDKdQVRHgUNhgsoMPGp/ZJvcr7Ezh2j0vQkO99OQNyVb
VlFBKrwaFw+TV+x4jxabUPNW9GT5/g60zg8gwGWrO6bf3zCceUQA6Lk6zXxB5M/T
DBNieowdjAPJOpHn8xgvvJ3Z2wUavqk1KJhetQze+7iTEPxvDwgUW/yhXDLh8cQ=
=eUe/
-----END PGP SIGNATURE-----