I have a patch to send_json that echos the Connection header if defined, that seems to fix the issue. I'll attach it to the ticket as a starting point



On Sep 15, 2009, at 9:22 PM, Adam Kocoloski wrote:

Heh, I stand corrected. +1 on the path forward. I guess its just a matter of adding Connection: Keep-Alive to the response headers.

Adam

On Sep 15, 2009, at 6:52 PM, Paul Davis wrote:

Both MochiWeb and http://www.io.com/~maus/HttpKeepAlive.html think
there is Keep-Alive in HTTP/1.0. And I'm guessing a great many clients
do as well. Granted its by convention and not part of the spec, do we
kill the possibility or adhere to convention.

Seeing as Mochiweb already tries I would say we should patch Mochiweb
to support it.

Sent to your iPhone

On Tue, Sep 15, 2009 at 6:22 PM, Adam Kocoloski
<[email protected]> wrote:
There's no keep-alive in HTTP/1.0 ...

Sent from my iPhone

On Sep 15, 2009, at 6:11 PM, "Paul Joseph Davis (JIRA)" <[email protected] >
wrote:


 [
https://issues.apache.org/jira/browse/COUCHDB-504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12755734#action_12755734 ]

Paul Joseph Davis commented on COUCHDB-504:
-------------------------------------------

http://code.google.com/p/couchdb-python/issues/detail?id=85

Looks like this could be related.

HTTP/1.1 keep alive fails with AB
---------------------------------

             Key: COUCHDB-504
URL: https://issues.apache.org/jira/browse/ COUCHDB-504
         Project: CouchDB
      Issue Type: Bug
      Components: HTTP Interface
Affects Versions: 0.10
     Environment: Trunk
        Reporter: Paul Joseph Davis
        Assignee: Paul Joseph Davis
        Priority: Blocker

Reported on dev@
On Tue, Sep 15, 2009 at 3:33 PM, thomas hallaran <[email protected] >
wrote:

Hi all,
We are using couchdb in production and have come across what appears to
be a
bug in the HTTP implementation. Apparently http keep alive requests are
not
correctly supported by couchdb.

This problem has been verified for both couchdb .10 a running on ubuntu
with erlang 13.b1 and couchdb .91 running on osx.  We have also
reproduced
it with multiple http clients, the apache hc java client, curl and ab.

To Reproduce: ab -v 4 -k -n1

http://localhost:5984/{COUCHDB_GET_ENDPOINT}<http://localhost:5984/%7BCOUCHDB_GET_ENDPOINT%7D >times out. If you add more requests for ab to do (-n4 or something) you will see that rather than reusing the connection, each keepalive request
times
out and then the connection is reopened and the request made.

And I've verified:
$ svn up
#snipped
Updated to revision 815457.
$ ./bootstrap && ./configure && make dev
#snipped
$ ./utils/run
Apache CouchDB 0.11.0a815457 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
# In second terminal
$ curl -X PUT http://127.0.0.1:5984/test_fu
{"ok":true}
$ curl -X PUT -d '{"stuff": "here"}' http://127.0.0.1:5984/test_fu/beer
{"ok":true,"id":"beer","rev":"1-9782357dd8b8d18d94843686e510ec92"}
$ ab -v 4 -k -n1 http://127.0.0.1:5984/test_fu/beer
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)...INFO: POST header ==
---
GET /test_fu/beer HTTP/1.0
Connection: Keep-Alive
Host: 127.0.0.1:5984
User-Agent: ApacheBench/2.3
Accept: */*
---
LOG: header received:
HTTP/1.0 200 OK
Server: CouchDB/0.11.0a815457 (Erlang OTP/R13B)
Etag: "1-9782357dd8b8d18d94843686e510ec92"
Date: Tue, 15 Sep 2009 19:44:36 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 74
Cache-Control: must-revalidate
{"_id ":"beer ","_rev":"1-9782357dd8b8d18d94843686e510ec92","stuff":"here"}
LOG: Response code = 200
apr_poll: The timeout specified has expired (70007)

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.




Reply via email to