hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Purtell (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-18431) Mitigate compatibility concerns between branch-1.3 and branch-1.4
Date Thu, 27 Jul 2017 16:39:00 GMT

    [ https://issues.apache.org/jira/browse/HBASE-18431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16103453#comment-16103453
] 

Andrew Purtell commented on HBASE-18431:
----------------------------------------

[~mdrob] I have only been looking at this in terms of getting 1.4 out the door. Could do more
to provide a path for removal in 2.0. What do you think of this plan?

* Add back the new SnapshotDescription definition in Snapshot.proto
* Deprecate but do not remove Admin APIs using HBaseProtos#SnapshotDescription
* Create a new SnapshotDescription model class and add ProtobufUtil static helpers for translating
between the model and its serialization. Insta-deprecated methods returning HBaseProtos#SnapshotDescription.
New methods returning SnapshotProtos#SnapshotDescription. SnapshotDescription model class
will have constructors that accept both. Constructor accepting HBaseProtos#SnapshotDescription
is insta-deprecated.
* Add new Admin APIs using the SnapshotDescription model class
* In 1.x: Leave the coprocessor hook definitions as is
* In 2.x: Replace use of HBaseProtos#SnapshotDescription with SnapshotDescription model class
in coprocessor hooks. My feeling is it is uglier to have a bunch of deprecated methods in
these interfaces than to make a clean break. 
* The DeleteTracker package move that breaks a CP interface is fine for 2.x. No need to deprecate.
Again judging it better to make clean breaks for CP interfaces on the major version than load
down the interfaces with deprecated methods.

> Mitigate compatibility concerns between branch-1.3 and branch-1.4
> -----------------------------------------------------------------
>
>                 Key: HBASE-18431
>                 URL: https://issues.apache.org/jira/browse/HBASE-18431
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Andrew Purtell
>            Assignee: Andrew Purtell
>            Priority: Blocker
>             Fix For: 1.4.0, 1.5.0
>
>         Attachments: HBASE-18431-branch-1.4.patch
>
>
> There are compatibility concerns with branch-1.4. 
> {noformat}
> Library Name	HBase
> Version #1	1.3.1
> Version #2	1.4.0-SNAPSHOT
> Subject	Binary Compatibility
> Compatibility - 89.9%
> Added Methods - 305
> Removed Methods - 105
> Problems with Data Types
> 	High - 23
> 	Medium - 9
> 	Low - 21
> {noformat}
> {noformat}
> Library Name	HBase
> Version #1	1.3.1
> Version #2	1.4.0-SNAPSHOT
> Subject	Source Compatibility
> Compatibility- 86.5%
> Added Methods - 305
> Removed Methods - 105
> Problems with Data Types
> 	High - 88
> 	Medium - 0
> 	Low - 0
> Other Changes in Data Types	 - 25
> {noformat}
> This report includes HBASE-15816 which hasn't been committed yet. Otherwise it's current.
> I'm not generally concerned with added methods. 
> The following methods have been added to Public/Evolving interface Table. Pointing them
out in case it merits review.
> \\
> * Abstract method Table.getReadRpcTimeout ( ) has been added to this interface.	No effect.
> * Abstract method Table.getWriteRpcTimeout ( ) has been added to this interface.	No effect.
> * Abstract method Table.setReadRpcTimeout ( int ) has been added to this interface.	No
effect.
> * Abstract method Table.setWriteRpcTimeout ( int ) has been added to this interface.
> The Public/Evolving interface Admin has some signature changes equating to removed methods.
I don't think this is allowed in a minor release.
> \\
> * Abstract method Admin.isSnapshotFinished ( HBaseProtos.SnapshotDescription ) has been
removed from Admin.
> *  Abstract method Admin.snapshot ( String, TableName, HBaseProtos.SnapshotDescription.Type
) has been removed from Admin.
> * Abstract method Admin.snapshot ( HBaseProtos.SnapshotDescription ) has been removed
from Admin.
> *  Abstract method Admin.takeSnapshotAsync ( HBaseProtos.SnapshotDescription ) has been
removed from Admin.
> The LimitedPrivate(CONFIG) interface AsyncRpcClient has been removed. This change is
debatable but I think we can allow it.
> \\
> * AsyncRpcClient has been removed
> The Public/Evolving class FastLongHistogram has been removed. I don't believe this change
is allowed in a minor release.
> \\
> * FastLongHistogram has been removed
> Method signatures in LimitedPrivate(COPROC) interfaces MasterObserver and RegionObserver
have changed, equating to removed methods. The first set of changes is due to move of SnapshotDescription
from HBaseProtos to SnapshotProtos:
> \\
> * Abstract method MasterObserver.postCloneSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from MasterObserver.
> * Abstract method MasterObserver.postDeleteSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription ) has been removed from MasterObserver.
> * Abstract method MasterObserver.postListSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription ) has been removed from MasterObserver.
> * Abstract method MasterObserver.postRestoreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from MasterObserver.
> * Abstract method MasterObserver.postSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from MasterObserver.
> * Abstract method MasterObserver.preCloneSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from MasterObserver.
> * Abstract method MasterObserver.preDeleteSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription ) has been removed from MasterObserver.
> * Abstract method MasterObserver.preListSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription ) has been removed from MasterObserver.
> * Abstract method MasterObserver.preRestoreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from MasterObserver.
> * Abstract method MasterObserver.preSnapshot ( ObserverContext<MasterCoprocessorEnvironment>,
HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from MasterObserver.
> Here, maybe DeleteTracker moved packages?
> \\
> * Abstract method RegionObserver.postInstantiateDeleteTracker ( ObserverContext<RegionCoprocessorEnvironment>,
DeleteTracker ) has been removed from RegionObserver.
> The LimitedPrivate(COPROC) interface Store has method signature changes equating to removed
methods. The changes are debatable. I am thinking we can allow them. Anyone implementing their
own Stores?
> \\
> * Abstract method Store.bulkLoadHFile ( String, long ) has been removed from Store.
> * Abstract method Store.getScanners ( List<StoreFile>, boolean, boolean, boolean,
boolean, ScanQueryMatcher, byte[ ], byte[ ], long, boolean ) has been removed from Store.
> * Abstract method Store.getScanners ( boolean, boolean, boolean, boolean, ScanQueryMatcher,
byte[ ], byte[ ], long ) has been removed from Store.
> * Abstract method Store.upsert ( Iterable<Cell>, long ) has been removed from Store.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message