Filipe committed a fix to 1.2.x and master that resolved the issue for my testing.
http://git-wip-us.apache.org/repos/asf/couchdb/diff/597de1b994e2ca3bf3d828646578ac75910cd26d http://git-wip-us.apache.org/repos/asf/couchdb/diff/3458eb4620c879ca786e8905697b8f0b31391205 Thanks Filipe for the patch, Bob for bringing this up and Robert Newson for providing good insight on future compatibility and a validating test script. Cheers Jan -- On Feb 9, 2012, at 13:27 , Robert Newson wrote: > First, I acknowledge I'm wandering in halfway on this topic, however I > don't much like the idea of baking BC knowledge into couchdb. The > sequence value in all versions of couchdb and bigcouch are valid JSON, > it's either a number, a string or an array. CouchDB prior to 1.2.x was > agnostic to this and 1.2 should be too. > > On 9 February 2012 12:15, Bob Dionne <[email protected]> wrote: >> Filipe, >> >> That seems to work fine[1]. I've tried it on both the 1.2.x and master >> branches and it works with bigcouch-0.4 >> >> Cheers, >> >> Bob >> >> [1] https://gist.github.com/1779568 >> >> On Feb 8, 2012, at 8:52 PM, Bob Dionne wrote: >> >>> Filipe, >>> >>> couch_replicator_api_wrap does like the best place to do this. I'll try >>> this out in the morning and let you know. >>> >>> Thanks also for the explanation about query_args_to_string. Makes sense. >>> >>> Best, >>> >>> Bob >>> >>> On Feb 8, 2012, at 6:20 PM, Filipe David Manana wrote: >>> >>>> On Wed, Feb 8, 2012 at 9:31 PM, Bob Dionne <[email protected]> >>>> wrote: >>>>> Hi Filipe, >>>>> >>>>> I ran into a possible issue replicating from BC 0.4 to CouchDB 1.2.x >>>>> (someone needs to verify this is a problem and not my local setup). >>>>> >>>>> The issue seems to be the treatment of sequence numbers like >>>>> [2,<<"foo">>]. The latest in 1.2.x of couch_replicator_httpc:send_req >>>>> runs ?b2l(iolist_to_binary(...)) over that seq and eventually full_url >>>>> trundles on down to mochiweb_util:quote_plus which loses the brackets and >>>>> converts the 2 to a %02 >>>> >>>> Hi Bob, >>>> >>>> I'm assuming this is related to _changes feed request "since" parameter. >>>> In general, couch_replicator_httpc doesn't do query parameter value >>>> encoding (other then percent encoding), that task is left to >>>> couch_replicator_api_wrap.erl - for e.g. some requests require JSON >>>> encoded values, like open_revs for doc GETs, and others not, like the >>>> feed parameter for _changes. >>>> >>>> If it applies only for that request, I would go for something less >>>> abstract like (untested) for example: >>>> >>>> http://friendpaste.com/6aWgbQaBjMeR9pIshWr5rl >>>> >>>> And you can't replace the list comprehension in couch_replicator_httpc >>>> because there the goal is only to make sure the values are >>>> lists/strings - when OAuth auth is used, the OAuth signature must be >>>> computed with the query parameter values unencoded and as >>>> strings/lists - percent encoding must happen after computing the OAuth >>>> signature. >>>> >>>> regards, >>>> >>>>> >>>>> I can get around this [1] by converting [2,<<"foo">>] to "2-foo" which is >>>>> the old format, but this is clearly a workaround. Perhaps this should be >>>>> fixed in mochiweb_util ? >>>>> >>>>> As an aside I noticed mochiweb_util:urlencode does exactly what you have >>>>> in query_to_str_args so those funs can probably go away. >>>>> >>>>> Cheers, >>>>> >>>>> Bob >>>>> >>>>> [1] https://gist.github.com/1772911 >>>> >>>> >>>> >>>> -- >>>> Filipe David Manana, >>>> >>>> "Reasonable men adapt themselves to the world. >>>> Unreasonable men adapt the world to themselves. >>>> That's why all progress depends on unreasonable men." >>> >>
