[ https://issues.apache.org/jira/browse/HBASE-18431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16108127#comment-16108127 ]
Andrew Purtell commented on HBASE-18431: ---------------------------------------- I'm afraid that won't be possible [~anoop.hbase]. The implicated methods in Admin are already tagged as deprecated. I can bring in the Snapshot and SnapshotType POJO classes but can only add some methods to Admin using them. Java doesn't recognize methods with different return types as different methods. I cannot add methods like listSnapshots() returning a different type without either renaming the old method, breaking compat, or changing parameter signature, breaking compat. So the current patch as-is is the best we can do and I will commit it tomorrow unless objection. > 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)