On Jan 5, 2010, at 11:29 AM, Todd Lipcon wrote:
1) Although we certainly do not guarantee wire compatibility between
minor
versions (0.20 -> 0.21) have we previously implied wire compatibility
between bugfix releases?
Correction. Pre-1.0, the 0.N to 0.N+1 is a major upgrade. After 1.0,
1.N to 1.N+1 is a minor. In both cases, X.Y.z to X.Y.z+1 is a patch
release.
I thought we had it documented somewhere, but can't find it. There is
some discussion of compatibility in HADOOP-5071 that should be pulled
out into a wiki page.
The standing rules are that you don't incompatibly break APIs or wire
protocols in patch release. So, this patch violates the rule and
should have had a vote called before it was applied to branch-0.20.
(And arguably branch-0.21, although since it hasn't been released, it
isn't nearly the same level or problem.
2) Is the above something we *should* be guaranteeing already?
Patch releases:
1. Must be backwards API compatible without a client recompile.
2. Must be on the wire compatible.
Exceptions require a vote of the committers. We should also put a
notice of any exceptions at the top of the release notes.
4) If the above are problems, would it be worth considering a patch
for
branch-20 that provides a client that is compatible with either,
based on
the datanode protocol version number of the server? It seems like a
bit of
scary complexity, but wanted to throw it out there.
I would like Hairong to consider if she could fix the issue in 0.20
without the incompatible change. If it can not be done (or no one
wants to do the work), we should vote whether the change should be made.
-- Owen