[
https://issues.apache.org/jira/browse/COUCHDB-2758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14646852#comment-14646852
]
Robert Kowalski commented on COUCHDB-2758:
------------------------------------------
[~nolanlawson] which version of couchdb?
> Deleting non-existent _local doc in _bulk_docs causes 500
> ---------------------------------------------------------
>
> Key: COUCHDB-2758
> URL: https://issues.apache.org/jira/browse/COUCHDB-2758
> Project: CouchDB
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: Database Core
> Reporter: Nolan Lawson
> Attachments: couch-2758.sh
>
>
> Normally you should be able to update/add/delete {{_local}} docs in a
> {{_bulk_docs}} request, but if the {{_local}} doc doesn't exist (or if the
> provided {{_rev}} is wrong), then the database throws an error.
> Attached is a bash script using cURL to reproduce. Notice I'm adding two
> normal docs ({{mothra}} and {{rodan}}) and then I attempt to delete those two
> in a {{_bulk_docs}} along with a nonexistent {{_local}} doc called
> {{_local/godzilla}}. (Sorry for the goofy theme; I've been getting tired of
> foo and bar.)
> I expect to get back an array of results describing the 2 docs that succeeded
> as well as the 1 doc that failed. Instead I get an error report:
> {code}
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,237}]}]}}
> ** When Server state == {db,<0.3217.15>,<0.3218.15>,nil,
> <<"1438060201861904">>,<0.3216.15>,<0.3136.15>,
> <0.3220.15>,
> {db_header,6,0,0,nil,nil,nil,0,nil,nil,1000},
> 0,
> {btree,<0.3136.15>,
> {316,{2,0,78},116},
> #Fun<couch_db_updater.10.11117096>,
> #Fun<couch_db_updater.11.11117096>,
> #Fun<couch_btree.5.131744168>,
> #Fun<couch_db_updater.12.11117096>,snappy},
> {btree,<0.3136.15>,
> {432,2,103},
> #Fun<couch_db_updater.13.11117096>,
> #Fun<couch_db_updater.14.11117096>,
> #Fun<couch_btree.5.131744168>,
> #Fun<couch_db_updater.15.11117096>,snappy},
> {btree,<0.3136.15>,nil,
> #Fun<couch_btree.3.131744168>,
> #Fun<couch_btree.4.131744168>,
> #Fun<couch_btree.5.131744168>,nil,snappy},
> 2,<<"testdb">>,
> "/usr/local/var/lib/couchdb/testdb.couch",[],[],
> nil,
> {user_ctx,null,[],undefined},
> #Ref<0.0.16.194130>,1000,
> [before_header,after_header,on_file_open],
> [create,
> {user_ctx,
> {user_ctx,null,
> [<<"_admin">>],
> <<"{couch_httpd_auth,
> default_authentication_handler}">>}}],
> snappy,nil,nil}
> ** Reason for termination ==
> ** {function_clause,
> [{couch_db_updater,'-update_local_docs/2-fun-0-',
> [{<0.3111.15>,
> {{doc,<<"_local/godzilla">>,{1,[<<"fake">>]},{[]},[],true,[]},
> #Ref<0.0.16.194164>}},
> not_found],
> [{file,"couch_db_updater.erl"},{line,730}]},
> {lists,zipwith,3,[{file,"lists.erl"},{line,449}]},
> {couch_db_updater,update_local_docs,2,
> [{file,"couch_db_updater.erl"},{line,729}]},
> {couch_db_updater,update_docs_int,5,
> [{file,"couch_db_updater.erl"},{line,695}]},
> {couch_db_updater,handle_info,2,
> [{file,"couch_db_updater.erl"},{line,235}]},
> {gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,593}]},
> {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,659}]},
> {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]}
> [Tue, 28 Jul 2015 05:10:01 GMT] [error] [<0.3217.15>] {error_report,<0.30.0>,
> {<0.3217.15>,crash_report,
> [[{initial_call,{couch_db,init,['Argument__1']}},
> {pid,<0.3217.15>},
> {registered_name,[]},
> {error_info,
> {exit,
> {function_clause,
> [{couch_db_updater,
> '-update_local_docs/2-fun-0-',
> [{<0.3111.15>,
> {{doc,<<"_local/godzilla">>,
> {1,[<<"fake">>]},
> {[]},
> [],true,[]},
> #Ref<0.0.16.194164>}},
> not_found],
> [{file,"couch_db_updater.erl"},{line,730}]},
> {lists,zipwith,3,
> [{file,"lists.erl"},{line,449}]},
> {couch_db_updater,update_local_docs,2,
> [{file,"couch_db_updater.erl"},{line,729}]},
> {couch_db_updater,update_docs_int,5,
> [{file,"couch_db_updater.erl"},{line,695}]},
> {couch_db_updater,handle_info,2,
> [{file,"couch_db_updater.erl"},{line,235}]},
> {gen_server,try_dispatch,4,
> [{file,"gen_server.erl"},{line,593}]},
> {gen_server,handle_msg,5,
> [{file,"gen_server.erl"},{line,659}]},
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,237}]}]},
> [{gen_server,terminate,7,
> [{file,"gen_server.erl"},{line,804}]},
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,237}]}]}},
> {ancestors,[<0.3214.15>]},
> {messages,[]},
> {links,[<0.84.0>]},
> {dictionary,[]},
> {trap_exit,true},
> {status,running},
> {heap_size,1598},
> {stack_size,27},
> {reductions,403}],
> []]}}
> [Tue, 28 Jul 2015 05:10:01 GMT] [error] [<0.3111.15>] Uncaught error in HTTP
> request: {exit,
> {function_clause,
> [{couch_db_updater,
>
> '-update_local_docs/2-fun-0-',
> [{<0.3111.15>,
> {{doc,
>
> <<"_local/godzilla">>,
>
> {1,[<<"fake">>]},
> {[]},
> [],true,[]},
>
> #Ref<0.0.16.194164>}},
> not_found],
> [{file,
>
> "couch_db_updater.erl"},
> {line,730}]},
> {lists,zipwith,3,
> [{file,"lists.erl"},
> {line,449}]},
> {couch_db_updater,
> update_local_docs,2,
> [{file,
>
> "couch_db_updater.erl"},
> {line,729}]},
> {couch_db_updater,
> update_docs_int,5,
> [{file,
>
> "couch_db_updater.erl"},
> {line,695}]},
> {couch_db_updater,
> handle_info,2,
> [{file,
>
> "couch_db_updater.erl"},
> {line,235}]},
> {gen_server,
> try_dispatch,4,
> [{file,
> "gen_server.erl"},
> {line,593}]},
> {gen_server,
> handle_msg,5,
> [{file,
> "gen_server.erl"},
> {line,659}]},
> {proc_lib,
> init_p_do_apply,3,
> [{file,
> "proc_lib.erl"},
> {line,237}]}]}}
> [Tue, 28 Jul 2015 05:10:01 GMT] [error] [<0.84.0>] Unexpected exit of
> database process <0.3217.15> [<<"testdb">>]: {function_clause,
>
> [{couch_db_updater,
>
> '-update_local_docs/2-fun-0-',
>
> [{<0.3111.15>,
>
> {{doc,
>
> <<"_local/godzilla">>,
>
> {1,
>
> [<<"fake">>]},
>
> {[]},
>
> [],
>
> true,
>
> []},
>
> #Ref<0.0.16.194164>}},
>
> not_found],
>
> [{file,
>
> "couch_db_updater.erl"},
>
> {line,
>
> 730}]},
>
> {lists,
>
> zipwith,
>
> 3,
>
> [{file,
>
> "lists.erl"},
>
> {line,
>
> 449}]},
>
> {couch_db_updater,
>
> update_local_docs,
>
> 2,
>
> [{file,
>
> "couch_db_updater.erl"},
>
> {line,
>
> 729}]},
>
> {couch_db_updater,
>
> update_docs_int,
>
> 5,
>
> [{file,
>
> "couch_db_updater.erl"},
>
> {line,
>
> 695}]},
>
> {couch_db_updater,
>
> handle_info,
>
> 2,
>
> [{file,
>
> "couch_db_updater.erl"},
>
> {line,
>
> 235}]},
>
> {gen_server,
>
> try_dispatch,
>
> 4,
>
> [{file,
>
> "gen_server.erl"},
>
> {line,
>
> 593}]},
>
> {gen_server,
>
> handle_msg,
>
> 5,
>
> [{file,
>
> "gen_server.erl"},
>
> {line,
>
> 659}]},
>
> {proc_lib,
>
> init_p_do_apply,
>
> 3,
>
> [{file,
>
> "proc_lib.erl"},
>
> {line,
>
> 237}]}]}
> [Tue, 28 Jul 2015 05:10:01 GMT] [info] [<0.3111.15>] Stacktrace:
> [{couch_db,collect_results,3,
> [{file,"couch_db.erl"},{line,833}]},
> {couch_db,write_and_commit,4,
> [{file,"couch_db.erl"},{line,845}]},
> {couch_db,update_docs,4,
> [{file,"couch_db.erl"},{line,782}]},
> {couch_httpd_db,db_req,2,
> [{file,"couch_httpd_db.erl"},
> {line,330}]},
> {couch_httpd_db,do_db_req,2,
> [{file,"couch_httpd_db.erl"},
> {line,234}]},
> {couch_httpd,handle_request_int,5,
> [{file,"couch_httpd.erl"},{line,318}]},
> {mochiweb_http,headers,5,
> [{file,"mochiweb_http.erl"},{line,94}]},
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,237}]}]
> [Tue, 28 Jul 2015 05:10:01 GMT] [error] [<0.3111.15>] {error_report,<0.30.0>,
> {<0.3111.15>,crash_report,
> [[{initial_call,
> {mochiweb_acceptor,init,
> ['Argument__1','Argument__2','Argument__3']}},
> {pid,<0.3111.15>},
> {registered_name,[]},
> {error_info,
> {error,badarg,
> [{erlang,list_to_binary,
> [[{couch_db_updater,
> '-update_local_docs/2-fun-0-',
> [{<0.3111.15>,
> {{doc,<<"_local/godzilla">>,
> {1,[<<"fake">>]},
> {[]},
> [],true,[]},
> #Ref<0.0.16.194164>}},
> not_found],
> [{file,"couch_db_updater.erl"},{line,730}]},
> {lists,zipwith,3,
> [{file,"lists.erl"},{line,449}]},
> {couch_db_updater,update_local_docs,2,
> [{file,"couch_db_updater.erl"},{line,729}]},
> {couch_db_updater,update_docs_int,5,
> [{file,"couch_db_updater.erl"},{line,695}]},
> {couch_db_updater,handle_info,2,
> [{file,"couch_db_updater.erl"},{line,235}]},
> {gen_server,try_dispatch,4,
> [{file,"gen_server.erl"},{line,593}]},
> {gen_server,handle_msg,5,
> [{file,"gen_server.erl"},{line,659}]},
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,237}]}]],
> []},
> {couch_httpd,error_info,1,
> [{file,"couch_httpd.erl"},{line,818}]},
> {couch_httpd,send_error,2,
> [{file,"couch_httpd.erl"},{line,925}]},
> {couch_httpd,handle_request_int,5,
> [{file,"couch_httpd.erl"},{line,368}]},
> {mochiweb_http,headers,5,
> [{file,"mochiweb_http.erl"},{line,94}]},
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,237}]}]}},
> {ancestors,
> [couch_httpd,couch_secondary_services,
> couch_server_sup,<0.31.0>]},
> {messages,[]},
> {links,[<0.101.0>,#Port<0.320113>]},
> {dictionary,
> [{mochiweb_request_body,
>
> <<"{\"new_edits\":true,\"docs\":[{\"_id\":\"mothra\",\"_rev\":\"1-967a00dff5e02add41819138abb3284d\",\"_deleted\":true},{\"_id\":\"_local/godzilla\",\"_rev\":\"1-fake\",\"_deleted\":true},{\"_id\":\"rodan\",\"_rev\":\"1-967a00dff5e02add41819138abb3284d\",\"_deleted\":true}]}">>},
> {couch_rewrite_count,0},
> {mochiweb_request_recv,true},
> {mochiweb_request_cookie,[]}]},
> {trap_exit,false},
> {status,running},
> {heap_size,4185},
> {stack_size,27},
> {reductions,11631}],
> []]}}
> [Tue, 28 Jul 2015 05:10:38 GMT] [info] [<0.3198.15>] 127.0.0.1 - - DELETE
> /testdb/ 200
> [Tue, 28 Jul 2015 05:10:38 GMT] [info] [<0.3047.15>] 127.0.0.1 - - PUT
> /testdb/ 201
> [Tue, 28 Jul 2015 05:10:38 GMT] [info] [<0.3049.15>] 127.0.0.1 - - PUT
> /testdb/mothra 201
> [Tue, 28 Jul 2015 05:10:38 GMT] [info] [<0.3221.15>] 127.0.0.1 - - PUT
> /testdb/rodan 201
> [Tue, 28 Jul 2015 05:10:38 GMT] [info] [<0.3227.15>] 127.0.0.1 - - POST
> /testdb/_bulk_docs?_nonce=1438060065251 201
> {code}
> Related to [PouchDB issue 4086 |
> https://github.com/pouchdb/pouchdb/issues/4086].
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)