[ https://issues.apache.org/jira/browse/COUCHDB-354?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jan Lehnardt closed COUCHDB-354. -------------------------------- Resolution: Fixed no barfs in trunk. -- > ruby1.9 test_reduce_barf.rb reduce across all says: {"rows":[]} j...@dahlia ~/Downloads > curl http://127.0.0.1:5984/ {"couchdb":"Welcome","version":"0.10.0a773842"} -- Apache CouchDB 0.10.0a773842 (LogLevel=debug) is starting. Configuration Settings ["/Users/jan/Work/couchdb/trunk/etc/couchdb/default_dev.ini", "/Users/jan/Work/couchdb/trunk/etc/couchdb/local_dev.ini"]: [couchdb] batch_save_interval="1000" [couchdb] batch_save_size="1000" [couchdb] database_dir="/Users/jan/Work/couchdb/trunk/tmp/lib" [couchdb] max_attachment_chunk_size="4294967296" [couchdb] max_dbs_open="100" [couchdb] max_document_size="4294967296" [couchdb] os_process_timeout="5000" [couchdb] util_driver_dir="/Users/jan/Work/couchdb/trunk/src/couchdb/.libs" [couchdb] view_index_dir="/Users/jan/Work/couchdb/trunk/tmp/lib" [daemons] batch_save="{couch_batch_save_sup, start_link, []}" [daemons] db_update_notifier="{couch_db_update_notifier_sup, start_link, []}" [daemons] external_manager="{couch_external_manager, start_link, []}" [daemons] httpd="{couch_httpd, start_link, []}" [daemons] query_servers="{couch_query_servers, start_link, []}" [daemons] stats_aggregator="{couch_stats_aggregator, start, []}" [daemons] stats_collector="{couch_stats_collector, start, []}" [daemons] view_manager="{couch_view, start_link, []}" [httpd] WWW-Authenticate="Basic realm=\"administrator\"" [httpd] authentication_handler="{couch_httpd, default_authentication_handler}" [httpd] bind_address="127.0.0.1" [httpd] default_handler="{couch_httpd_db, handle_request}" [httpd] port="5984" [httpd_db_handlers] _changes="{couch_httpd_db, handle_changes_req}" [httpd_db_handlers] _compact="{couch_httpd_db, handle_compact_req}" [httpd_db_handlers] _design="{couch_httpd_db, handle_design_req}" [httpd_db_handlers] _temp_view="{couch_httpd_view, handle_temp_view_req}" [httpd_design_handlers] _list="{couch_httpd_show, handle_view_list_req}" [httpd_design_handlers] _show="{couch_httpd_show, handle_doc_show_req}" [httpd_design_handlers] _view="{couch_httpd_view, handle_view_req}" [httpd_global_handlers] /="{couch_httpd_misc_handlers, handle_welcome_req, <<\"Welcome\">>}" [httpd_global_handlers] _active_tasks="{couch_httpd_misc_handlers, handle_task_status_req}" [httpd_global_handlers] _all_dbs="{couch_httpd_misc_handlers, handle_all_dbs_req}" [httpd_global_handlers] _config="{couch_httpd_misc_handlers, handle_config_req}" [httpd_global_handlers] _log="{couch_httpd_misc_handlers, handle_log_req}" [httpd_global_handlers] _replicate="{couch_httpd_misc_handlers, handle_replicate_req}" [httpd_global_handlers] _restart="{couch_httpd_misc_handlers, handle_restart_req}" [httpd_global_handlers] _sleep="{couch_httpd_misc_handlers, handle_sleep_req}" [httpd_global_handlers] _stats="{couch_httpd_stats_handlers, handle_stats_req}" [httpd_global_handlers] _utils="{couch_httpd_misc_handlers, handle_utils_dir_req, \"/Users/jan/Work/couchdb/trunk/share/www\"}" [httpd_global_handlers] _uuids="{couch_httpd_misc_handlers, handle_uuids_req}" [httpd_global_handlers] favicon.ico="{couch_httpd_misc_handlers, handle_favicon_req, \"/Users/jan/Work/couchdb/trunk/share/www\"}" [log] file="/Users/jan/Work/couchdb/trunk/tmp/log/couch.log" [log] level="debug" [query_server_config] reduce_limit="true" [query_servers] javascript="/Users/jan/Work/couchdb/trunk/bin/couchjs_dev /Users/jan/Work/couchdb/trunk/share/server/main.js" Apache CouchDB has started. Time to relax. [info] [<0.1.0>] Apache CouchDB has started. [debug] [<0.52.0>] 'DELETE' /test {1,1} Headers: [{'Accept',"application/xml"}, {'Accept-Encoding',"gzip, deflate"}, {'Host',"127.0.0.1:5984"}, {'User-Agent',"Ruby"}] [debug] [<0.52.0>] httpd 404 error response: {"error":"not_found","reason":"missing"} [info] [<0.52.0>] 127.0.0.1 - - 'DELETE' /test 404 [debug] [<0.57.0>] 'PUT' /test {1,1} Headers: [{'Accept',"application/xml"}, {'Accept-Encoding',"gzip, deflate"}, {'Content-Length',"2"}, {'Content-Type',"application/x-www-form-urlencoded"}, {'Host',"127.0.0.1:5984"}, {'User-Agent',"Ruby"}] [info] [<0.57.0>] 127.0.0.1 - - 'PUT' /test 201 [debug] [<0.58.0>] 'POST' /test/_bulk_docs {1,1} Headers: [{'Accept',"application/xml"}, {'Accept-Encoding',"gzip, deflate"}, {'Content-Length',"1901"}, {'Content-Type',"application/x-www-form-urlencoded"}, {'Host',"127.0.0.1:5984"}, {'User-Agent',"Ruby"}] [info] [<0.58.0>] 127.0.0.1 - - 'POST' /test/_bulk_docs 201 [debug] [<0.67.0>] 'PUT' /test/_design/test {1,1} Headers: [{'Accept',"application/xml"}, {'Accept-Encoding',"gzip, deflate"}, {'Content-Length',"896"}, {'Content-Type',"application/x-www-form-urlencoded"}, {'Host',"127.0.0.1:5984"}, {'User-Agent',"Ruby"}] [info] [<0.67.0>] 127.0.0.1 - - 'PUT' /test/_design/test 201 [debug] [<0.68.0>] 'GET' /test/_design/test/_view/test {1,1} Headers: [{'Accept',"application/xml"}, {'Accept-Encoding',"gzip, deflate"}, {'Host',"127.0.0.1:5984"}, {'User-Agent',"Ruby"}] [debug] [<0.44.0>] Spawning new group server for view group _design/test in database test. [debug] [<0.70.0>] Reseting group index "_design/test" in db test [debug] [<0.68.0>] request_group {Pid, Seq} {<0.70.0>,151} [debug] [<0.68.0>] request_group {Pid, Seq} {<0.70.0>,151} [info] [<0.68.0>] 127.0.0.1 - - 'GET' /test/_design/test/_view/test 200 [debug] [<0.69.0>] 'GET' / {1,1} Headers: [{'Accept',"*/*"}, {'Host',"127.0.0.1:5984"}, {'User-Agent',"curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3"}] [info] [<0.69.0>] 127.0.0.1 - - 'GET' / 200 > Ungraceful behaviour if view returns a function > ----------------------------------------------- > > Key: COUCHDB-354 > URL: https://issues.apache.org/jira/browse/COUCHDB-354 > Project: CouchDB > Issue Type: Improvement > Components: JavaScript View Server > Environment: {"couchdb":"Welcome","version":"0.10.0a776990"} > Reporter: Brian Candler > Priority: Minor > Attachments: barf.log, test_reduce_barf.rb > > > If a typo in a view definition causes it to return a function instead of a > normal value: > * the view server crashes > * you get a huge Erlang barf in the log with worrying messages like "OS > process timed out" and "brutal kill" > I got all this just by accidentally writing "vs.shift" instead of "vs.shift()" > The fundamental problem is that a function cannot be serialised in toJSON, > but the error message is not helpful: > OS Process Log Message: Error converting object to JSON: TypeError: > {Array:function (v) {var ... snip loads ... "Object"] is not a function > When actually the problem is that the object I was trying to convert *was* a > function :-) > I will attach some code which replicates this, and the barf generated. > Of course this is entirely down to user error in an invalid map/reduce > function. However there's already a clean error for 'undefined', maybe this > could be done for 'function' too (or indeed any non-serialisable entity) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.