[
https://issues.apache.org/jira/browse/HBASE-19099?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16224632#comment-16224632
]
Guanghao Zhang commented on HBASE-19099:
----------------------------------------
[~apurtell] Do you take a look about HBASE-18626? There is a problem when
rolling update to hbase 1.4 if the old cluster have tabel-cfs config in
replication peer.
In our internal cluster, our solution is:
1. master and client use different kerberos user.
2. disable replication peer
3. upgrade the replication peer config from string to PB. And update the owner
from client user to master kerberos.
4. rolling update cluster to new version. (Which support PB peer config and
route all replication request to master).
5. enable replication peer
So even a old client update the replication peer znode directly, it will fail
because permission problem. The new client can change the replication peer
success, because the replication request will be routed to master. And master
is the owner of the replication peer znode.
For branch 1.4, we need avoid the old client (which not supported PB table-cfs
config) to change the replication peer znode directly. But I don't have a good
idea now......
> Evaluate the remaining compatibility concerns between branch-1.3 and
> branch-1.4 / branch-1
> ------------------------------------------------------------------------------------------
>
> Key: HBASE-19099
> URL: https://issues.apache.org/jira/browse/HBASE-19099
> Project: HBase
> Issue Type: Task
> Affects Versions: 1.4.0, 1.5.0
> Reporter: Andrew Purtell
> Assignee: Andrew Purtell
> Priority: Blocker
> Fix For: 1.4.0, 1.5.0
>
>
> 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
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)