Thanks for that link, Alan.  That looks like a useful site!

Ideally, the Protocol Buffers project would give a clear statement about
wire compatibility between 2.5.0 and 2.6.1.  Unfortunately, I can't find
that anywhere.  If it's not documented, then it's probably worth following
up on the Protocol Buffers support lists to ask them.

One thing we could try is starting up a mix of Hadoop processes using
2.5.0 and 2.6.1 to see how it goes.  We've made a commitment to both
forward and backward compatibility within Hadoop 2.x, so we'd need a 2.5.0
client to be able to talk to a 2.6.1 server, and we'd need a 2.6.1 client
to be able to talk to a 2.5.0 server.  Even if this appears to go well, I
wouldn't consider it a substitute for a formal statement of the
compatibility policy from the Protocol Buffers project.  Otherwise, there
might be some subtle lurking issue that we miss in our initial testing.

As a reminder though, the community probably would want to see a strong
justification for the upgrade in terms of features or performance or
something else.  Right now, I'm not seeing a significant benefit for us
based on my reading of their release notes.  I think it's worthwhile to
figure this out first.  Otherwise, there is a risk that any testing work
turns out to be a wasted effort.

--Chris Nauroth




On 5/14/15, 7:23 AM, "Alan Burlison" <alan.burli...@oracle.com> wrote:

>On 13/05/2015 17:13, Chris Nauroth wrote:
>
>> It was important to complete this upgrade before Hadoop 2.x came out of
>> beta.  After that, we committed to a policy of backwards-compatibility
>> within the 2.x release line.  I can't find a statement about whether or
>> not Protocol Buffers 2.6.1 is backwards-compatible with 2.5.0 (both at
>> compile time and on the wire).  Do you know the answer?  If it's
>> backwards-incompatible, then we wouldn't be able to do this upgrade
>>within
>> Hadoop 2.x, though we could consider it for 3.x (trunk).
>
>I'm not sure about the wire format, what's the best way of checking for
>wire format issues?
>
>http://upstream-tracker.org/versions/protobuf.html suggests there are
>are some source-level issues which will require investigation.
>
>> In general, we upgrade dependencies when a new release offers a
>>compelling
>> benefit, not solely to keep up with the latest.  In the case of 2.5.0,
>> there was a performance benefit.  Looking at the release notes for 2.6.0
>> and 2.6.1, I don't see anything particularly compelling.  (That's just
>>my
>> opinion though, and others might disagree.)
>
>I think bundling or forking is the only practical option. I was looking
>to see if we could provide ProtocolBuffers as an installable option on
>our platform, if it's a version-compatibility nightmare as you say,
>that's going to be difficult as we really don't want to have to provide
>multiple versions.
>
>> BTW, if anyone is curious, it's possible to try a custom build right now
>> linked against 2.6.1.  You'd pass -Dprotobuf.version=2.6.1 and
>> -Dprotoc.path=<path to protoc 2.6.1 binary> when you run the mvn
>>command.
>
>Once I have fixed all the other source portability issues I'll circle
>back around and take a look at this.
>
>-- 
>Alan Burlison
>--

Reply via email to