Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase >> mail # dev >> Does compatibility between versions also mean binary compatibility?


Copy link to this message
-
Re: Does compatibility between versions also mean binary compatibility?
That seems reasonable to make an exception for coprocessors on binary
compatibility. Can this be explicitly documented if it's not already so
folks are sure to know that?

     James

On 04/04/2013 05:53 PM, Andrew Purtell wrote:
> Thanks for taking the time for the thoughtful feedback James.
>
>> - between 0.94.3 and 0.94.4, new methods were introduced on
> RegionScanner. Often coprocessors will have their own implementation of
> these so that they can aggregate in the postScannerOpen. Though this broke
> binary compat, it improved scan performance as well. Where does the binary
> compatible line stop?
>> - between 0.94.3 and 0.94.4, the class loading changed for coprocessors.
> If a coprocessor was on the classpath, it didn't matter what the jar path
> was, it would load. In 0.94.4, that was no longer the case - if the jar
> path was invalid, the coprocessor would no longer load. Though this broke
> compatibility, it was a good cleanup for the class loading logic. Call it a
> bug fix or a change in behavior, but either way it was an incompatible
> change. Is a change in behavior that causes incompatibilities still meet
> the binary compatible criteria?
>
> As "owner" of this space, I will claim that no binary compatibility nor
> even interface compatibility should be expected at this time even among
> point releases. This is for two reasons, the first being most important:
>
>      1) The Coprocessor API caters to only a few users currently, so feels
> the pull of the gravity of these major (new) users, e.g. security, Francis
> Liu's work, Phoenix. We can expect this to lessen naturally over time as --
> exactly here -- users like Phoenix become satisfied with the status quo and
> begin to push back. Your input going forward will be valuable.
>
>      2) Coprocessors are an extension surface for internals
>
>
>
> On Thu, Apr 4, 2013 at 4:29 PM, James Taylor <[EMAIL PROTECTED]> wrote:
>
>> The binary compat is a slippery slope. It'd be a bummer if we couldn't
>> take advantage of all the innovation you guys are doing. At the same time,
>> it's tough to require the Phoenix user community, for example, to upgrade
>> their HBase servers to be able to move to the latest version of Phoenix. I
>> don't know what the right answer is, but here are a couple of concrete
>> cases:
>> - between 0.94.3 and 0.94.4, new methods were introduced on RegionScanner.
>> Often coprocessors will have their own implementation of these so that they
>> can aggregate in the postScannerOpen. Though this broke binary compat, it
>> improved scan performance as well. Where does the binary compatible line
>> stop?
>> - between 0.94.3 and 0.94.4, the class loading changed for coprocessors.
>> If a coprocessor was on the classpath, it didn't matter what the jar path
>> was, it would load. In 0.94.4, that was no longer the case - if the jar
>> path was invalid, the coprocessor would no longer load. Though this broke
>> compatibility, it was a good cleanup for the class loading logic. Call it a
>> bug fix or a change in behavior, but either way it was an incompatible
>> change. Is a change in behavior that causes incompatibilities still meet
>> the binary compatible criteria?
>> - between 0.94.4 and 0.94.5, the essential column family feature was
>> introduced. This is an example of one that is binary compatible. We're able
>> to take advantage of the feature and maintain binary compatibility with
>> 0.94.4 (in which case the feature simple wouldn't be available).
>>
>> Maybe if we just explicitly identified compatibility issues, that would be
>> a good start? We'd likely need a way to find them, though.
>>
>>      James
>>
>> On 04/04/2013 03:59 PM, lars hofhansl wrote:
>>
>>> I agree we need both, but I'm afraid that ship has sailed.
>>> It's not something we paid a lot of attention to especially being
>>> forward-binary-compatible. I would guess that there will be many more of
>>> these issues.
>>>
>>> Also, we have to qualify this statement somewhere. If you extend