You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by "Phil May (JIRA)" <ji...@apache.org> on 2017/04/12 20:11:42 UTC

[jira] [Created] (COUCHDB-3373) POST to _changes times out if a POST body is present and the "filter" query parameter is set to something other than _doc_ids

Phil May created COUCHDB-3373:
---------------------------------

             Summary: POST to _changes times out if a POST body is present and the "filter" query parameter is set to something other than _doc_ids
                 Key: COUCHDB-3373
                 URL: https://issues.apache.org/jira/browse/COUCHDB-3373
             Project: CouchDB
          Issue Type: Bug
          Components: HTTP Interface
            Reporter: Phil May


CouchDB version – 2.0.0
Platform – Mac
Client – CURL

In CouchDB 2.0.0, if I do a POST to _changes, and I have the filter query parameter set to point to my design document, and I also have a superfluous JSON message body in the POST request, the request times out. If, however, there is no JSON body in the POST request, I get the expected behavior (correct filtered _changes response). I would expect the superfluous JSON body to be ignored if present, and for both to work the same (see examples below).

Unfiltered POSTs to _changes (no "filter" query param) work with or without a POST request body. POSTs to _changes with the query parameter set to "filter=_doc_ids", but with an unexpected JSON body, return a reasonable error – {"error":"bad_request","reason":"`doc_ids` filter parameter is not a list of doc ids."}

As an aside – in CouchDB 1.6, filtered POSTs to _changes work with or without a superfluous message body in the POST request (the request body is ignored).

It would be nice if CouchDB 2.0 behaved like 1.6, where the superfluous request body is simply ignored since it's not relevant to the request (i.e., the "filter" parameter is set, but not set to "_doc_ids").

Examples (I would expect these to behave identically):
=========================================
Superfluous Request Body:
> curl -v -X POST -H 'Content-Type: application/json' 'http://localhost:5984/couchbase-test-notes/_changes?feed=normal&style=all_docs&filter=filterFuncs/ownerFilter&owner=Gunderson' -d '{}'
...
< HTTP/1.1 500 Internal Server Error
< Cache-Control: must-revalidate
< Connection: close
< Content-Length: 37
< Content-Type: application/json
< Date: Wed, 12 Apr 2017 19:35:09 GMT
< Server: CouchDB/2.0.0 (Erlang OTP/19)
< X-Couch-Request-ID: 5a58b4cfba
< X-CouchDB-Body-Time: 0
< 
{"error":"error","reason":"timeout"}

No Request Body:
> curl -X POST -H 'Content-Type: application/json' 'http://localhost:5984/couchbase-test-notes/_changes?feed=normal&style=all_docs&filter=filterFuncs/ownerFilter&owner=Gunderson'
{"results":[
{"seq":"7-g1AAAAB5eJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuRAY-iPBYgydAApP6D1GYwJ7LnAgXYk1LMUg2S0rDpywIA-MYnAQ","id":"Gunderson-ThrowAway-faafcfac-4942-4c72-a6c3-27a0c3f68183","changes":[{"rev":"3-bf8d32e5dbc3417d737e6d1146da1879"}],"deleted":true},
.
.
.
],
"last_seq":"81-g1AAAACbeJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuDOVEmFyjAnmiZlmqalIZNAx5j8liAJEMDkPoPNc0UbFpSilmqAXbTsgC8KjHi","pending":0}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)