couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Samuel Tardieu (JIRA)" <j...@apache.org>
Subject [jira] [Created] (COUCHDB-2583) ensure_full_commit requires empty but typed content or it will unexpectedly drops the connection
Date Mon, 16 Feb 2015 12:05:11 GMT
Samuel Tardieu created COUCHDB-2583:
---------------------------------------

             Summary: ensure_full_commit requires empty but typed content or it will unexpectedly
drops the connection
                 Key: COUCHDB-2583
                 URL: https://issues.apache.org/jira/browse/COUCHDB-2583
             Project: CouchDB
          Issue Type: Bug
      Security Level: public (Regular issues)
          Components: HTTP Interface
            Reporter: Samuel Tardieu


When given an non-empty (but valid) JSON content, some methods such as {{_ensure_full_commit}}
will abruptly drop a persistent connection instead of waiting for a new HTTP request even
though no error is signaled in CouchDB logs:

{code:title=Request}
POST /testdb1/_ensure_full_commit HTTP/1.1
Host: localhost:5984
Accept: application/json
Content-Type: application/json
Content-Length: 2

{}
{code}

{code:title=Response}
HTTP/1.1 201 Created
Server: CouchDB/1.6.1 (Erlang OTP/17)
Date: Mon, 16 Feb 2015 11:49:11 GMT
Content-Type: application/json
Content-Length: 53
Cache-Control: must-revalidate

{"ok":true,"instance_start_time":"1424085277160411"}
{code}
[connection is closed without warning by CouchDB at this point]

To remedy that, one could try to give an empty content, but some frameworks (such as spray.io)
will systematically omit the {{Content-Type}} header in this case since it makes little sense
to type empty content. However, CouchDB will reject the request even though it does *not*
want any content:

{code:title=Request}
POST /testdb1/_ensure_full_commit HTTP/1.1
Host: localhost:5984
Accept: application/json
Content-Length: 0
{code}

{code:title=Response}
HTTP/1.1 415 Unsupported Media Type
Server: CouchDB/1.6.1 (Erlang OTP/17)
Date: Mon, 16 Feb 2015 11:55:52 GMT
Content-Type: application/json
Content-Length: 78
Cache-Control: must-revalidate

{"error":"bad_content_type","reason":"Content-Type must be application/json"}
{code}

This makes it impossible to use those methods with such frameworks. CouchDB should not drop
the connection and ignore the data if {{Content-Length}} is not 0, nor require that data be
typed with {{application/json}} if it is going to ignore it anyway or if it requires it to
be empty.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message