couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Erik Edin (JIRA)" <j...@apache.org>
Subject [jira] Updated: (COUCHDB-822) body_too_large error for external processes, when body is 3MB
Date Thu, 08 Jul 2010 20:01:50 GMT

     [ https://issues.apache.org/jira/browse/COUCHDB-822?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Erik Edin updated COUCHDB-822:
------------------------------

    Description: 
I have a photo which is around 3 MB that I'm trying to PUT to an external process on the CouchDB
database. The external process is called "_upload".
I get an uncaught error "{exit,{body_too_large,content_length}}" in the logs when trying this.
Smaller photos (around 60 kB) seem to work just fine.
This just happens with external processes. I can upload the photo as an attachment directly
to a document, with no problems.

The error is similar to an earlier bug in the mochiweb library that was fixed around Feb 2009,
where mochiweb never used the "max_document_size" setting that was provided when calling mochiweb_request:recv_body.

I believe, supported by the stack trace below, that the cause for this bug is that in couch_httpd_external:json_req_obj
the function mochiweb_request:recv_body/0 is called, which uses the mochiweb default value
on MaxBody, which is 1 MB.
I think that couch_httpd_external:json_req_obj should call mochiweb_request:recv_body/1 instead,
with the "max_document_size" setting as the argument.

Here are the error logs from one of my attempts:

[Thu, 08 Jul 2010 18:49:53 GMT] [debug] [<0.3738.0>] 'PUT' /pillowfight/_upload/6b1908c352129ddda396fa69ac003d11
{1,1}
Headers: [{'Accept',"*/*"},
          {'Content-Length',"3093976"},
          {'Content-Type',"image/jpg"},
          {"Expect","100-continue"},
          {'Host',"localhost:5984"},
          {'User-Agent',"curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3
libidn/1.15"}]

[Thu, 08 Jul 2010 18:49:53 GMT] [debug] [<0.3738.0>] OAuth Params: []

[Thu, 08 Jul 2010 18:49:53 GMT] [error] [<0.3738.0>] Uncaught error in HTTP request:
{exit,{body_too_large,content_length}}

[Thu, 08 Jul 2010 18:49:53 GMT] [info] [<0.3738.0>] Stacktrace: [{mochiweb_request,stream_body,5},
             {mochiweb_request,recv_body,2},
             {couch_httpd_external,json_req_obj,3},
             {couch_httpd_external,process_external_req,3},
             {couch_httpd_db,do_db_req,2},
             {couch_httpd,handle_request_int,5},
             {mochiweb_http,headers,5},
             {proc_lib,init_p_do_apply,3}]

  was:
I have a photo which is around 3 MB that I'm trying to PUT to an external process on the CouchDB
database. The external process is called "_upload".
I get an uncaught error "{exit,{body_too_large,content_length}}" in the logs when trying this.
Smaller photos (around 60 kB) seem to work just fine.
This just happens with external processes. I can upload the photo as an attachment directly
to a document, with no problems.

The error is similar to an earlier bug in the mochiweb library that was fixed around Feb 2009,
where mochiweb never used the "max_document_size" setting that was provided when calling mochiweb_request:recv_body.

I believe, supported by the stack trace below, that the cause for this bug is that in couch_httpd_external:json_req_obj
the function mochiweb_request:recv_body/0 is called, which uses the mochiweb default value
on MaxBody, which is 1 MB.
I think that couch_httpd_external:json_req_obj should call mochiweb_request:recv_body/1 instead,
with the "max_document_size" setting as the argument.

Unfortunately I was unable to patch it myself directly, probably due to my rusty Erlang skills.

Here are the error logs from one of my attempts:

[Thu, 08 Jul 2010 18:49:53 GMT] [debug] [<0.3738.0>] 'PUT' /pillowfight/_upload/6b1908c352129ddda396fa69ac003d11
{1,1}
Headers: [{'Accept',"*/*"},
          {'Content-Length',"3093976"},
          {'Content-Type',"image/jpg"},
          {"Expect","100-continue"},
          {'Host',"localhost:5984"},
          {'User-Agent',"curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3
libidn/1.15"}]

[Thu, 08 Jul 2010 18:49:53 GMT] [debug] [<0.3738.0>] OAuth Params: []

[Thu, 08 Jul 2010 18:49:53 GMT] [error] [<0.3738.0>] Uncaught error in HTTP request:
{exit,{body_too_large,content_length}}

[Thu, 08 Jul 2010 18:49:53 GMT] [info] [<0.3738.0>] Stacktrace: [{mochiweb_request,stream_body,5},
             {mochiweb_request,recv_body,2},
             {couch_httpd_external,json_req_obj,3},
             {couch_httpd_external,process_external_req,3},
             {couch_httpd_db,do_db_req,2},
             {couch_httpd,handle_request_int,5},
             {mochiweb_http,headers,5},
             {proc_lib,init_p_do_apply,3}]



Removing unnecessary comment to avoid any confusion on what I meant with the logs.

> body_too_large error for external processes, when body is 3MB
> -------------------------------------------------------------
>
>                 Key: COUCHDB-822
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-822
>             Project: CouchDB
>          Issue Type: Bug
>          Components: HTTP Interface
>    Affects Versions: 0.11
>         Environment: CouchDB 0.11 on Ubuntu 10.04,
>            Reporter: Erik Edin
>            Priority: Minor
>
> I have a photo which is around 3 MB that I'm trying to PUT to an external process on
the CouchDB database. The external process is called "_upload".
> I get an uncaught error "{exit,{body_too_large,content_length}}" in the logs when trying
this. Smaller photos (around 60 kB) seem to work just fine.
> This just happens with external processes. I can upload the photo as an attachment directly
to a document, with no problems.
> The error is similar to an earlier bug in the mochiweb library that was fixed around
Feb 2009, where mochiweb never used the "max_document_size" setting that was provided when
calling mochiweb_request:recv_body.
> I believe, supported by the stack trace below, that the cause for this bug is that in
couch_httpd_external:json_req_obj the function mochiweb_request:recv_body/0 is called, which
uses the mochiweb default value on MaxBody, which is 1 MB.
> I think that couch_httpd_external:json_req_obj should call mochiweb_request:recv_body/1
instead, with the "max_document_size" setting as the argument.
> Here are the error logs from one of my attempts:
> [Thu, 08 Jul 2010 18:49:53 GMT] [debug] [<0.3738.0>] 'PUT' /pillowfight/_upload/6b1908c352129ddda396fa69ac003d11
{1,1}
> Headers: [{'Accept',"*/*"},
>           {'Content-Length',"3093976"},
>           {'Content-Type',"image/jpg"},
>           {"Expect","100-continue"},
>           {'Host',"localhost:5984"},
>           {'User-Agent',"curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k
zlib/1.2.3.3 libidn/1.15"}]
> [Thu, 08 Jul 2010 18:49:53 GMT] [debug] [<0.3738.0>] OAuth Params: []
> [Thu, 08 Jul 2010 18:49:53 GMT] [error] [<0.3738.0>] Uncaught error in HTTP request:
{exit,{body_too_large,content_length}}
> [Thu, 08 Jul 2010 18:49:53 GMT] [info] [<0.3738.0>] Stacktrace: [{mochiweb_request,stream_body,5},
>              {mochiweb_request,recv_body,2},
>              {couch_httpd_external,json_req_obj,3},
>              {couch_httpd_external,process_external_req,3},
>              {couch_httpd_db,do_db_req,2},
>              {couch_httpd,handle_request_int,5},
>              {mochiweb_http,headers,5},
>              {proc_lib,init_p_do_apply,3}]

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


Mime
View raw message