On Wed, Mar 11, 2015 at 4:04 PM, Enis Söztutar <e...@apache.org> wrote:

>
> 1. Hadoop upgraded its version of jackson in 2.5, and HBase MR jobs fail
> flat out without corresponding change in HBase (with Hadoop-2.5+). We do
> not have any control over Hadoop or similar core dependencies. We cannot be
> realistically expected to guarantee more than what they do. I would rather
> do the change in 1.1 and not inconvenience the users, than not do the
> change, and have to explain how to replace the jars in the docs. This
> argument should be extended beyond the jackson dependency.
>
>
It's worth noting that if users follow our ref guide (which says to use
"hadoop jar"), then jobs don't fail. It's only when they attempt to launch
jobs using "hbase com.example.MyDriver" that things fail.

Additionally, if we stick to telling users that only the "hadoop jar"
version is supported, we can rely on the application classpath support
built into Hadoop 2.6+ to make it so jobs built on us get our dependency
version and not the ones from Hadoop as it changes.



> So, my proposal is:
>  - Commit HBASE-13149 to master and 1.1
>  - Either change the dependency compat story for minor versions to false,
> or add a footnote saying that there may be exceptions because of the
> reasons listed above.
>


If we decide we need to do the jackson version bump, what about the
possibility of moving the code in branch-1 to be version 2.0.0 (and making
master 3.0.0). We could start the release process once the changes Andrew
needs for Phoenix are in place and get it out the door.

It would do a nice job of desensitizing us to major version increments and
we'd be able to document it as a very safe major version upgrade since the
only breakage is that dependency. We could then limit the HBase 1.y line to
just 1.0.z and add a FAQ item if enough folks ask about why the sudden
increment.

I'm -1 on the idea of exceptions for our compatibility story. We already
note that just because we can break something doesn't mean we will. That
does a good job of pointing out that we recognize there's a cost.

I really like the fact that we do dependency compat promises on minor
versions. So long as we're making choices that constrain downstream (like
java compiler versions or classpaths with third-party dependencies), that
promise means that I can just pay the cost of relying on the same version
HBase does and in exchange I have one less thing to worry about when
evaluating the risk of keeping up with minor releases.

-- 
Sean

Reply via email to