This is an automated email from the ASF dual-hosted git repository. rnewson pushed a commit to branch user-partitioned-dbs-6 in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 7f30db99f9a1fc6c212d4256de6e7d6217851321 Author: Robert Newson <[email protected]> AuthorDate: Wed Sep 12 19:10:50 2018 +0100 fix local (5986) doc creation --- src/chttpd/src/chttpd_db.erl | 10 ++++++++-- src/couch/src/couch_doc.erl | 7 ------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl index 0bfe040..9dab4b5 100644 --- a/src/chttpd/src/chttpd_db.erl +++ b/src/chttpd/src/chttpd_db.erl @@ -470,17 +470,19 @@ db_req(#httpd{method='POST',path_parts=[_,<<"_bulk_docs">>], user_ctx=Ctx}=Req, _ -> Options = [{user_ctx,Ctx}, {w,W}] end, + DbName = couch_db:name(Db), + VOpts = [{partitioned, mem3:is_partitioned(DbName)}], case couch_util:get_value(<<"new_edits">>, JsonProps, true) of true -> Docs = lists:map( fun(JsonObj) -> - DbName = couch_db:name(Db), Doc = couch_doc:from_json_obj_validate(JsonObj, DbName), validate_attachment_names(Doc), Id = case Doc#doc.id of <<>> -> couch_uuids:new(); Id0 -> Id0 end, + couch_doc:validate_docid(Id, DbName, VOpts), Doc#doc{id=Id} end, DocsArray), @@ -506,7 +508,11 @@ db_req(#httpd{method='POST',path_parts=[_,<<"_bulk_docs">>], user_ctx=Ctx}=Req, send_json(Req, 417, ErrorsJson) end; false -> - Docs = [couch_doc:from_json_obj_validate(JsonObj) || JsonObj <- DocsArray], + Docs = [begin + couch_doc:from_json_obj_validate(JsonObj) + end + || JsonObj <- DocsArray], + [couch_doc:validate_docid(D#doc.id, DbName, VOpts) || D <- Docs], [validate_attachment_names(D) || D <- Docs], case fabric:update_docs(Db, Docs, [replicated_changes|Options]) of {ok, Errors} -> diff --git a/src/couch/src/couch_doc.erl b/src/couch/src/couch_doc.erl index 135effd..2c92a9a 100644 --- a/src/couch/src/couch_doc.erl +++ b/src/couch/src/couch_doc.erl @@ -133,13 +133,6 @@ from_json_obj_validate(EJson) -> from_json_obj_validate(EJson, DbName) -> MaxSize = config:get_integer("couchdb", "max_document_size", 4294967296), Doc = from_json_obj(EJson, DbName), - case is_binary(DbName) andalso mem3:is_partitioned(DbName) of - true -> - Options = [{partitioned, true}], - couch_doc:validate_docid(Doc#doc.id, DbName, Options); - false -> - ok - end, case couch_ejson_size:encoded_size(Doc#doc.body) =< MaxSize of true -> validate_attachment_sizes(Doc#doc.atts),
