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

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

> Both the Admin and MasterObserver changes can be resolved by moving 
> SnapshotDescription back into HBaseProtos.

This is fun. SnapshotDescription includes something from AccessControl.proto, 
which includes HBase.proto, so putting SnapshotDescription into HBase.proto 
leads to disallowed recursion between proto modules. Let me see if I can find 
an alternative that doesn't affect public APIs. 

> 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
>            Priority: Blocker
>             Fix For: 1.4.0, 1.5.0
>
>
> 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)

Reply via email to