Josh Elser created HBASE-15221:
----------------------------------

             Summary: HTableMultiplexer improvements (stale region locations 
and resource leaks)
                 Key: HBASE-15221
                 URL: https://issues.apache.org/jira/browse/HBASE-15221
             Project: HBase
          Issue Type: Bug
          Components: Client
            Reporter: Josh Elser
            Assignee: Josh Elser
            Priority: Critical
             Fix For: 2.0.0, 1.2.1, 1.1.4, 0.98.18


It looks like HTableMultiplexer has a couple of issues.

Upon failing to send a Put to the appropriate RS, the Put is re-queued back 
into the system. Normally this is fine as such an exception is transient and 
the Put would eventually succeed. However, in the case where the Put was 
rejected because of a NotServingRegionException (e.g. split, balance, merge), 
the re-queuing of the Put will end up using the same cached HRegionLocation. 
This means that the Put will just be repeatedly sent back to the same RS over 
and over again, eventually being dropped on the floor. Need to invalidate the 
location cache (or make sure we refresh it) when we re-queue the Put.

The internal ClusterConnection is also leaked. If a user creates many 
HTableMultiplexers, they'll eventually run into issues (memory, zk connections, 
etc) because they'll never get cleaned up. HTableMultiplexer needs a close 
method.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to