diff options
author | Adam Kocoloski <kocolosk@apache.org> | 2011-01-18 00:42:36 +0000 |
---|---|---|
committer | Adam Kocoloski <kocolosk@apache.org> | 2011-01-18 00:42:36 +0000 |
commit | 8432c0e8f31a683b13419dc591edca49933d1f81 (patch) | |
tree | 1b6e47712ad654eccd524379873fb99f943a563e /src/couchdb | |
parent | 3674f2a2ef778bdf211426d9e804192e22cd26ad (diff) |
Avoid bug in rev tree logic during attachment uploads
This is a workaround for a bug in couch_key_tree, described in
COUCHDB-902, which would cause uploads to fail with spurious conflicts.
A patch for the key tree itself will be landing on trunk.
Thanks Bob Dionne, Klaus Trainer.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/branches/1.0.x@1060149 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb')
-rw-r--r-- | src/couchdb/couch_httpd_db.erl | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl index 1767d9cc..217a2d03 100644 --- a/src/couchdb/couch_httpd_db.erl +++ b/src/couchdb/couch_httpd_db.erl @@ -1020,8 +1020,10 @@ db_attachment_req(#httpd{method=Method,mochi_req=MochiReq}=Req, Db, DocId, FileN end end, - #doc{atts=Atts} = Doc, + #doc{atts=Atts, revs = {Pos, Revs}} = Doc, DocEdited = Doc#doc{ + % prune revision list as a workaround for key tree bug (COUCHDB-902) + revs = {Pos, case Revs of [] -> []; [Hd|_] -> [Hd] end}, atts = NewAtt ++ [A || A <- Atts, A#att.name /= FileName] }, {ok, UpdatedRev} = couch_db:update_doc(Db, DocEdited, []), |