couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Anderson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (COUCHDB-598) _show without docid returns 500 instead of 404
Date Tue, 22 Dec 2009 16:54:29 GMT

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

Chris Anderson commented on COUCHDB-598:
----------------------------------------

I believe I actually "fixed" this in my ddoc-qs branch I plan to merge (maybe today).

I am not strongly opinionated here, but I'm leaning toward thinking we should handle 404 properly
when people call a show function with a document id that doesn't exist.

I have not changed the behavior at all regarding calling show functions without a docid (still
runs the function).

My reasoning for this fix is that custom error pages (for the small percentage of users who
want them) are not worth handing nasty 500 errors to everyone who didn't consider this corner
case.

I consider this a minor detail in the ddoc-qs patch, and am open for discussion / changing
it back to the current behavior.

> _show without docid returns 500 instead of 404
> ----------------------------------------------
>
>                 Key: COUCHDB-598
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-598
>             Project: CouchDB
>          Issue Type: Bug
>          Components: HTTP Interface
>    Affects Versions: 0.10
>         Environment: Ubuntu Karmic
>            Reporter: Markus
>            Priority: Minor
>
> See also the thread on the mailing list::http://www.mail-archive.com/user@couchdb.apache.org/msg05633.html
and especially the following quote from Chris Anderson :" The change would be simple, just
remove a catch clause on couch_httpd_show.erl line 81."
> Original message below:
> ------
> According to
> http://books.couchdb.org/relax/design-documents/shows#Querying%20Show%
> 20Functions i should receive an HTTP 404 Not Found response, instead i
> get a HTTP 500 Internal Server Error. I am unsure as of yet whether i am
> doing something wrong or if i should file a bug report for this one.
> Here are my two documents in my test database named shows:
> {
>    "_id": "_design/test",
>    "_rev": "1-21a6d69070ae4bec3e9f14fbb7f93201",
>    "shows": {
>        "summary": "function (doc, req) { return 
> '<h1>'+doc.title+'</h1><p>'+doc.body+'</p>'; } "
>    }
> }
> and
> {
>    "_id": "bd108c433aedaa1bd2def0ec85e59a0d",
>    "_rev": "3-5a031adf97aabe4888b9bfb94ba28d13",
>    "title": "title",
>    "body": "body text"
> }
> I receive proper results using the following HTTP GET request
> http://zealand:5984/shows/_design/test/_show/summary/bd108c433aedaa1bd2def0ec85e59a0d
> - code : 200
> - body : <h1>title</h1><p>body text</p>
> Now consider querying the same show function with a non-existing
> document id 
> http://zealand:5984/shows/_design/test/_show/summary/404
> - code 500
> - body {"error":"normal","reason":"{gen_server,call,\n
> [couch_query_servers,\n             {ret_proc,{proc,<0.1481.0>,<<
> \"javascript\">>,\n
> {couch_os_process,prompt},\n
> {couch_os_process,set_timeout},\n
> {couch_os_process,stop}}}]}"}
> Here is the output in the couch.log file:
> [Tue, 01 Dec 2009 10:31:37 GMT] [debug] [<0.1594.0>] OAuth Params: []
> [Tue, 01 Dec 2009 10:31:37 GMT] [info] [<0.1726.0>] OS Process ::
> function raised error: TypeError: doc is null
> [Tue, 01 Dec 2009 10:31:37 GMT] [info] [<0.1726.0>] OS Process ::
> stacktrace: (null,[object Object])@:0
> runShow(function (doc, req) {return "<h1>" + doc.title + "</h1><p>"
+
> doc.body + "</p>";},null,[object Object],"function (doc, req) { return
> '<h1>'+doc.title+'</h1><p>'+doc.body+'</p>'; }
> ")@/usr/share/couchdb/server/main.js:388
> ("function (doc, req) { return '<h1>'+doc.title+'</h1><p>'+doc.body
> +'</p>'; } ",null,[object Object])@/usr/share/couchdb/server/main.js:358
> @/usr/share/couchdb/server/main.js:842
> [Tue, 01 Dec 2009 10:31:37 GMT] [error] [<0.1594.0>] OS Process Error ::
> {render_error,{[{<<"body">>,
>                                      <<"<html><body><h1>Render
> Error</h1><p>JavaScript function raised error: TypeError: doc is
> null</p><h2>Stacktrace:</h2><code><pre>(null,[object Object])@:0
> \nrunShow(function (doc, req) {return \"&lt;h1&gt;\" + doc.title +
> \"&lt;/h1&gt;&lt;p&gt;\" + doc.body + \"&lt;/p&gt;\";},null,[object
> Object],\"function (doc, req) { return '&lt;h1&gt;'+doc.title
> +'&lt;/h1&gt;&lt;p&gt;'+doc.body+'&lt;/p&gt;'; }
> \")@/usr/share/couchdb/server/main.js:388\n(\"function (doc, req)
> { return '&lt;h1&gt;'+doc.title+'&lt;/h1&gt;&lt;p&gt;'+doc.body
> +'&lt;/p&gt;'; } \",null,[object
> Object])@/usr/share/couchdb/server/main.js:358
> \n@/usr/share/couchdb/server/main.js:842\n</pre></code><h2>Function
> source:</h2><code><pre>function (doc, req) { return
> '&lt;h1&gt;'+doc.title+'&lt;/h1&gt;&lt;p&gt;'+doc.body+'&lt;/p&gt;';
}
> </pre></code></body></html>">>}]}}
> [Tue, 01 Dec 2009 10:31:37 GMT] [debug] [<0.1628.0>] Unknown linked
> process died: <0.1726.0> (reason: normal)
> [Tue, 01 Dec 2009 10:31:37 GMT] [error] [<0.53.0>]
> {error_report,<0.24.0>,
>               {<0.53.0>,supervisor_report,
>                [{supervisor,{local,couch_secondary_services}},
>                 {errorContext,child_terminated},
>                 {reason,normal},
>                 {offender,[{pid,<0.1628.0>},
>                            {name,query_servers},
>                            {mfa,{couch_query_servers,start_link,[]}},
>                            {restart_type,permanent},
>                            {shutdown,brutal_kill},
>                            {child_type,worker}]}]}}
> [Tue, 01 Dec 2009 10:31:37 GMT] [error] [<0.1594.0>] Uncaught error in
> HTTP request: {exit,
>                                  {normal,
>                                   {gen_server,call,
>                                    [couch_query_servers,
>                                     {ret_proc,
>                                      {proc,<0.1726.0>,<<"javascript">>,
>                                       {couch_os_process,prompt},
>                                       {couch_os_process,set_timeout},
>                                       {couch_os_process,stop}}}]}}}
> [Tue, 01 Dec 2009 10:31:37 GMT] [info] [<0.1594.0>] Stacktrace:
> [{gen_server,call,2},
>              {couch_query_servers,ret_os_process,1},
>              {couch_query_servers,render_doc_show,6},
>              {couch_httpd_show,'-send_doc_show_response/6-fun-0-',6},
>              {couch_httpd_db,do_db_req,2},
>              {couch_httpd,handle_request,5},
>              {mochiweb_http,headers,5},
>              {proc_lib,init_p_do_apply,3}]
> [Tue, 01 Dec 2009 10:31:37 GMT] [debug] [<0.1594.0>] httpd 500 error
> response:
>  {"error":"normal","reason":"{gen_server,call,\n
> [couch_query_servers,\n             {ret_proc,{proc,<0.1726.0>,<<
> \"javascript\">>,\n
> {couch_os_process,prompt},\n
> {couch_os_process,set_timeout},\n
> {couch_os_process,stop}}}]}"}
> [Tue, 01 Dec 2009 10:31:37 GMT] [info] [<0.1594.0>] 192.168.218.87 - -
> 'GET' /shows/_design/test/_show/summary/404 50
> I am using CouchDB 0.10.0 from Ubuntu Karmic's repository. Any
> assistance is much appreciated.

-- 
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