Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-19099

Evaluate the remaining API compatibility concerns between branch-1.3 and branch-1.4 / branch-1

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 1.4.0
    • 1.4.0
    • None
    • None

    Description

      For discussion, here are the remaining compatibility concerns you will encounter upon moving up from 1.3 to 1.4:

      The below all relate to source level compatibility. Recompilation of a client program may be terminated with the message "class C is not abstract and does not override abstract method M in TYPE". According to our compatibility guidelines we are allowed to add methods to interfaces, so these are ALLOWED. Please let me know if you disagree.

      package org.apache.hadoop.hbase.client
      interface Admin

      • Abstract method clearDeadServers ( List<ServerName> ) has been added to this interface.
      • Abstract method cloneSnapshot ( String, TableName, boolean ) has been added to this interface.
      • Abstract method isCleanerChoreEnabled ( ) has been added to this interface.
      • Abstract method isMasterInMaintenanceMode ( ) has been added to this interface.
      • Abstract method listDeadServers ( ) has been added to this interface.
      • Abstract method restoreSnapshot ( String, boolean, boolean ) has been added to this interface.
      • Abstract method runCleanerChore ( ) has been added to this interface.
      • Abstract method setCleanerChoreRunning ( boolean ) has been added to this interface.

      package org.apache.hadoop.hbase.client
      interface ResultScanner

      • Abstract method renewLease ( ) has been added to this interface.
      • Abstract method getScanMetrics ( ) has been added to this interface.

      package org.apache.hadoop.hbase.client
      interface Table

      • Abstract method getReadRpcTimeout ( ) has been added to this interface.
      • Abstract method getWriteRpcTimeout ( ) has been added to this interface.
      • Abstract method setReadRpcTimeout ( int ) has been added to this interface.
      • Abstract method setWriteRpcTimeout ( int ) has been added to this interface.

      package org.apache.hadoop.hbase.replication
      interface ReplicationPeer

      • Abstract method getPeerBandwidth ( ) has been added to this interface.
      • Abstract method trackPeerConfigChanges ( ReplicationPeerConfigListener ) has been added to this interface.

      package org.apache.hadoop.hbase.coprocessor
      interface MasterCoprocessorEnvironment

      • Abstract method getMetricRegistryForMaster ( ) has been added to this interface.

      package org.apache.hadoop.hbase.coprocessor
      interface MasterObserver

      • Abstract method postAddRSGroup ( ObserverContext<MasterCoprocessorEnvironment>, String ) has been added to this interface.
      • Abstract method postBalanceRSGroup ( ObserverContext<MasterCoprocessorEnvironment>, String, boolean ) has been added to this interface.
      • Abstract method postClearDeadServers ( ObserverContext<MasterCoprocessorEnvironment> ) has been added to this interface.
      • Abstract method postListDeadServers ( ObserverContext<MasterCoprocessorEnvironment> ) has been added to this interface.
      • Abstract method postMoveServers ( ObserverContext<MasterCoprocessorEnvironment>, Set<Address>, String ) has been added to this interface.
      • Abstract method postMoveServersAndTables ( ObserverContext<MasterCoprocessorEnvironment>, Set<Address>, Set<TableName>, String ) has been added to this interface.
      • Abstract method postMoveTables ( ObserverContext<MasterCoprocessorEnvironment>, Set<TableName>, String ) has been added to this interface.
      • Abstract method postRemoveRSGroup ( ObserverContext<MasterCoprocessorEnvironment>, String ) has been added to this interface.
      • Abstract method preAddRSGroup ( ObserverContext<MasterCoprocessorEnvironment>, String ) has been added to this interface.
      • Abstract method preBalanceRSGroup ( ObserverContext<MasterCoprocessorEnvironment>, String ) has been added to this interface.
      • Abstract method preClearDeadServers ( ObserverContext<MasterCoprocessorEnvironment> ) has been added to this interface.
      • Abstract method preListDeadServers ( ObserverContext<MasterCoprocessorEnvironment> ) has been added to this interface.
      • Abstract method preMoveServers ( ObserverContext<MasterCoprocessorEnvironment>, Set<Address>, String ) has been added to this interface.
      • Abstract method preMoveServersAndTables ( ObserverContext<MasterCoprocessorEnvironment>, Set<Address>, Set<TableName>, String ) has been added to this interface.
      • Abstract method preMoveTables ( ObserverContext<MasterCoprocessorEnvironment>, Set<TableName>, String ) has been added to this interface.
      • Abstract method preRemoveRSGroup ( ObserverContext<MasterCoprocessorEnvironment>, String ) has been added to this interface.

      package org.apache.hadoop.hbase.coprocessor
      interface RegionCoprocessorEnvironment

      • Abstract method getMetricRegistryForRegionServer ( ) has been added to this interface.

      package org.apache.hadoop.hbase.coprocessor
      interface RegionObserver

      • Abstract method postCommitStoreFile ( ObserverContext<RegionCoprocessorEnvironment>, byte[ ], Path, Path ) has been added to this interface.
      • Abstract method preCommitStoreFile ( ObserverContext<RegionCoprocessorEnvironment>, byte[ ], List<Pair<Path,Path>> ) has been added to this interface.
      • Abstract method preCompactScannerOpen ( ObserverContext<RegionCoprocessorEnvironment>, Store, List<?>, ScanType, long, InternalScanner, CompactionRequest, long ) has been added to this interface.
      • Abstract method preFlushScannerOpen ( ObserverContext<RegionCoprocessorEnvironment>, Store, KeyValueScanner, InternalScanner, long ) has been added to this interface.

      package org.apache.hadoop.hbase.coprocessor
      interface WALCoprocessorEnvironment

      • Abstract method getMetricRegistryForRegionServer ( ) has been added to this interface.

      package org.apache.hadoop.hbase.ipc
      class RpcScheduler

      • Abstract method getActiveReadRpcHandlerCount ( ) has been added to this class.
      • Abstract method getActiveScanRpcHandlerCount ( ) has been added to this class.
      • Abstract method getActiveWriteRpcHandlerCount ( ) has been added to this class.
      • Abstract method getReadQueueLength ( ) has been added to this class.
      • Abstract method getScanQueueLength ( ) has been added to this class.
      • Abstract method getWriteQueueLength ( ) has been added to this class.

      package org.apache.hadoop.hbase.regionserver
      interface Region

      • Abstract method closeRegionOperation ( Region.Operation ) has been added to this interface.
      • Abstract method waitForFlushes ( ) has been added to this interface.

      package org.apache.hadoop.hbase.replication
      interface ReplicationEndpoint 1

      • Added super-interface ReplicationPeerConfigListener. (Added methods.)

      .
      .

      AsyncRpcClient has been removed. It was not Public. This change is ALLOWED.

      package org.apache.hadoop.hbase.ipc
      class AsyncRpcClient

      .
      .

      There are also changes to the LimitedPrivate interface Store. We previously discussed this, and solicited and received feedback from the Phoenix project saying they do not represent a problem, so the changes will be ALLOWED.

      package org.apache.hadoop.hbase.regionserver
      interface Store

      • Abstract method add ( Iterable<Cell> ) has been added to this interface.
      • Abstract method bulkLoadHFile ( byte[ ], String, Path ) has been added to this interface.
      • Abstract method getScanners ( List<StoreFile>, boolean, boolean, boolean, boolean, ScanQueryMatcher, byte[ ], byte[ ], long, boolean ) has been added to this interface.
      • Abstract method getScanners ( boolean, boolean, boolean, boolean, ScanQueryMatcher, byte[ ], byte[ ], long ) has been added to this interface.
      • Abstract method upsert ( Iterable<Cell>, long, List<Cell> ) has been added to this interface.
      • Abstract method bulkLoadHFile ( String, long ) has been removed from this interface.
      • Abstract method getScanners ( List<StoreFile>, boolean, boolean, boolean, boolean, ScanQueryMatcher, byte[ ], byte[ ], long, boolean ) has been removed from this interface.
      • Abstract method getScanners ( boolean, boolean, boolean, boolean, ScanQueryMatcher, byte[ ], byte[ ], long ) has been removed from this interface.
      • Abstract method upsert ( Iterable<Cell>, long ) has been removed from this interface.

      .
      .

      A number of configuration constants were (re)moved from SimpleRpcScheduler, tagged LimitedPrivate. I think these can be ALLOWED.

      package org.apache.hadoop.hbase.ipc
      class SimpleRpcScheduler

      Removed constants

      • CALL_QUEUE_CODEL_DEFAULT_INTERVAL
      • CALL_QUEUE_CODEL_DEFAULT_LIFO_THRESHOLD
      • CALL_QUEUE_CODEL_DEFAULT_TARGET_DELAY
      • CALL_QUEUE_CODEL_INTERVAL
      • CALL_QUEUE_CODEL_LIFO_THRESHOLD
      • CALL_QUEUE_CODEL_TARGET_DELAY
      • CALL_QUEUE_HANDLER_FACTOR_CONF_KEY
      • CALL_QUEUE_READ_SHARE_CONF_KEY
      • CALL_QUEUE_SCAN_SHARE_CONF_KEY
      • CALL_QUEUE_TYPE_CODEL_CONF_VALUE
      • CALL_QUEUE_TYPE_CONF_DEFAULT
      • CALL_QUEUE_TYPE_CONF_KEY
      • CALL_QUEUE_TYPE_DEADLINE_CONF_VALUE
      • CALL_QUEUE_TYPE_FIFO_CONF_VALUE
      • QUEUE_MAX_CALL_DELAY_CONF_KEY

      .
      .

      Two constants were removed from Public class TableInputFormatBase. I think these are internal implementation details and so removal can be ALLOWED, but we could put them back if need be.

      package org.apache.hadoop.hbase.mapreduce
      class TableInputFormatBase

      Removed constants

      • INPUT_AUTOBALANCE_MAXSKEWRATIO
      • TABLE_ROW_TEXTKEY

      Attachments

        Activity

          People

            apurtell Andrew Kyle Purtell
            apurtell Andrew Kyle Purtell
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: