couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rnewson <...@git.apache.org>
Subject couchdb pull request: Restore rev handling for _bulk_docs with all_or_nothi...
Date Mon, 17 Jun 2013 10:13:25 GMT
GitHub user rnewson opened a pull request:

    https://github.com/apache/couchdb/pull/66

    Restore rev handling for _bulk_docs with all_or_nothing

    Commit 5b1430c120904181313848444dbfcdb60e42568b added this hunk;
    
    -        {aborted, lists:map(
    -            fun({{Id,{Pos, [RevId|_]}}, Error}) ->
    -                {{Id, {Pos, RevId}}, Error};
    -            ({{Id,{0, []}}, Error}) ->
    -                {{Id, {0, <<>>}}, Error}
    -            end, PreCommitFailures)};
    +        {aborted,
    +         lists:foldl(fun({#doc{id=Id,revs={Pos, RevIds}}, Ref},Acc) ->
    +                         case lists:keyfind(Ref,1,PreCommitFailures) of
    +                         {Ref, Error} ->
    +                             [{{Id,{Pos,RevIds}}, Error} | Acc];
    +                         false ->
    +                             Acc
    +                         end
    +                     end,[],Docs3)};
    +
    
    This causes the full list of revisions to be passed to revid_to_str/1;
    
    revid_to_str(RevId) when size(RevId) =:= 16 ->
        ?l2b(couch_util:to_hex(RevId));
    revid_to_str(RevId) ->
        RevId.
    
    This falls through to the second case, which in turn leads to invalid
    JSON output when we convert the presumed iolist.
    
    This patch restores the code that takes only the head of the revisions
    list when present, and an artificial "0-" when it is not (in the case
    that the validation fails for a new document rather than an update).
    
    BugzID: 1772

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/rnewson/couchdb 1772-restore-rev-handling

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/couchdb/pull/66.patch

----

----


Mime
View raw message