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

[email protected] commented on HBASE-5134:
------------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3419/
-----------------------------------------------------------

Review request for hbase.


Summary
-------

Untangle HConnection.  Makes it so I can mock scanning which wasn't
possible when Callables had HConnections and HConnections had Callables.
I want this so we can write tests around some of the interesting master fails
we've seen of late; e.g. shutdown handler running at same time as a balance.

With this change I can do things like standup an AssignmentManager and
concurrently run a ServerShutdownHandler apart from their HMaster context;
I can fake out the ServerShutdownHandler feeding it whatever for metarows, etc.
Included are new tests that run an AssignmentManager#balance end-to-end and
that put up a ServerShutdownHandler and run a server shutdown processing.

M src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java
  Add a note that timeouts need fixup in here.
  Handle RetriesExhaustedException (Now we can mock at a lower-level
  than previous, below Callables where we used short-circuit them, we
  see Callable exceptions coming out in tests -- add handling).

M src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java
  Callable retrying is done on the Callable now, not via HConnection.

A src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java
  Move common connection utility here, shared by HConnection and Callable.
  
M src/main/java/org/apache/hadoop/hbase/client/HConnection.java
  (getRegionServerWithRetries, getRegionServerWithoutRetries): deprecated.
  They are done on the Callable itself itself now.
  (clearCaches): Added.

M src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
 (getPauseTime): Moved out to ConnectionUtils
 (getRegionServerWithRetries, getRegionServerWithoutRetries): deprecated.
 Changed body of methods to call new implementation.
 Removed dead code.  Added doc and comments on other stuff to move.
 (translateException): Moved out to ServerCallable where its used.

M src/main/java/org/apache/hadoop/hbase/client/HTable.java
  Callable retrying is done on the Callable now, not via HConnection.

M src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
  Callable retrying is done on the Callable now, not via HConnection.

M src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
  (getConnection): Added
  (withRetries, withoutRetries): These replace old
   getRegionServerWithRetries, getRegionServerWithoutRetries that used to
   be done via HConnection.

M src/main/java/org/apache/hadoop/hbase/ipc/ExecRPCInvoker.java
  Callable retrying is done on the Callable now, not via HConnection.

M src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java
  Callable retrying is done on the Callable now, not via HConnection.

M src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
  Comment.

M src/main/java/org/apache/hadoop/hbase/master/handler/ClosedRegionHandler.java
  Comment.

M 
src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
  Make use of a data member previous unused.

M src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTracker.java
  Callables are in the mix now so stuff gets retried.  Deal with it.

M src/test/java/org/apache/hadoop/hbase/client/HConnectionTestingUtility.java
  Add a method that mocks out more methods in a mocked HConnection.

M 
src/test/java/org/apache/hadoop/hbase/mapreduce/TestLoadIncrementalHFilesSplitRecovery.java
  Comment.

M src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
  Add two tests, a testBalance and testServerShutdown

M src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
  Use new utility.

M 
src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java
  Callables are in the mix now so stuff gets retried.  Deal with it.


This addresses bug HBASE-5134.
    https://issues.apache.org/jira/browse/HBASE-5134


Diffs
-----

  src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java 8ec5042 
  src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java 6cdeec1 
  src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/client/HConnection.java 0e78d96 
  src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java 852a810 
  src/main/java/org/apache/hadoop/hbase/client/HTable.java 839d79b 
  src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java 4135e55 
  src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java 9b568e3 
  src/main/java/org/apache/hadoop/hbase/ipc/ExecRPCInvoker.java 3ad6cd5 
  src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java 
bd574b2 
  src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java d13daf0 
  src/main/java/org/apache/hadoop/hbase/master/handler/ClosedRegionHandler.java 
2dfc3e7 
  
src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java 
2dd497b 
  src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTracker.java dada051 
  src/test/java/org/apache/hadoop/hbase/client/HConnectionTestingUtility.java 
c1a077f 
  
src/test/java/org/apache/hadoop/hbase/mapreduce/TestLoadIncrementalHFilesSplitRecovery.java
 5e3e994 
  src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java 
82b32aa 
  src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java c359f4b 
  
src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java
 0a34371 

Diff: https://reviews.apache.org/r/3419/diff


Testing
-------


Thanks,

Michael


                
> Remove getRegionServerWithoutRetries and getRegionServerWithRetries from 
> HConnection Interface
> ----------------------------------------------------------------------------------------------
>
>                 Key: HBASE-5134
>                 URL: https://issues.apache.org/jira/browse/HBASE-5134
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: stack
>
> Its broke having these meta methods in HConnection.  They take 
> ServerCallables which themselves have HConnections inevitably.   It makes for 
> a tangle in the model and frustrates being able to do mocked implemenations 
> of HConnection.  These methods better belong in something like 
> HConnectionManager, or elsewhere altogether.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to