[ https://issues.apache.org/jira/browse/COUCHDB-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13431288#comment-13431288 ]
Robert Newson commented on COUCHDB-1521: ---------------------------------------- Upgrading this to blocker because a) it's very silly and b) I think worse things happen if the two attachments were the same length. > multipart parser gets multiple attachments mixed up > --------------------------------------------------- > > Key: COUCHDB-1521 > URL: https://issues.apache.org/jira/browse/COUCHDB-1521 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface > Affects Versions: 1.2 > Reporter: Jens Alfke > Priority: Blocker > Fix For: 1.3 > > > When receiving a document PUT in multipart format, CouchDB gets the > attachments and MIME parts mixed up. Instead of looking at the headers of a > MIME part to identify which attachment it is (most likely by using the > 'filename' property of the 'Content-Disposition:' header), it processes the > attachments according to the order in which their metadata objects appear in > the JSON body's '_attachments:' object. > The problem with this is that JSON objects (dictionaries) are _not_ ordered > collections. I know that Erlang's implementation of them (as linked lists of > key/value pairs) happens to be ordered, and I think some JavaScript > implementations have the side effect of preserving order; but in many > languages these are implemented as hash tables and genuinely unordered. > This means that when a program written in such a language converts a native > object to JSON, it has no control over (and probably no knowledge of) the > order in which the keys of the JSON object are written out. This makes it > impossible to then write the attachments in the same order. > The only workaround seems to be for the program to implement its own custom > JSON encoder just so that it can write object keys in a known order (probably > sorted), which then enables it to write the attachment bodies in the same > order. > NOTE: This is the flip side of COUCHDB-1368 which I filed last year; that bug > has to do with the same ordering issue when CouchDB _generates_ multipart > responses (and presents similar problems for clients not written in Erlang.) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira