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

Mikhail Antonov commented on HBASE-13252:
-----------------------------------------

Thanks for review [~ndimiduk].

I'll update the patch to use try-with-resource everywhere.

On backward-compatibility note..

 - ClusterConnection and ConnectionAdapter are Private APIs
 - ConnectionFactory is {Public, Evolving} and I removed one package-level 
static method
 - ConnectionManager class, which I removed, was {Private}, and I moved some 
nested static classes and methods from it to ConnectionImplementation (also 
Private). My motivation was to reduce the number of ways to grab connections, 
and to prevent situations when there're like 3 ways to do something, 2 out of 
which are deprecated.
 - HConnectionKey class (which I removed) didn't have any audience annotation 
at all, but was only used as a key for connection cache
 - HConnectionTestingUtility class isn't marked with audience annotation 
(probably should be Private?), and I removed one method.

One question where I'd appreciate comment - ServerResourceCheckerJUnitListener 
seems to be not needed now, is that right? We don't trace leaking connection 
anymore, as we don't track number of cached connections (as they are not cached 
at all).

So "technically" that looks backward compatible..In reality, that would break 
clients directly using ClusterConnection or ConnectionManager. Clients abiding 
interface audience annotations shouldn't be affected.. Would be good to run PE 
or YCSB to check possible performance degradation (just I don't have proper rig 
handy right now).

So probably we can pull it into 1.1 with release note that internal connection 
lifecycle management has changed. What do you think? Do you think it's 
something needed for 1.1?

> Get rid of managed connections and connection caching
> -----------------------------------------------------
>
>                 Key: HBASE-13252
>                 URL: https://issues.apache.org/jira/browse/HBASE-13252
>             Project: HBase
>          Issue Type: Sub-task
>          Components: API
>    Affects Versions: 2.0.0
>            Reporter: Mikhail Antonov
>            Assignee: Mikhail Antonov
>         Attachments: HBASE-13252-v0.patch, HBASE-13252-v1.patch, 
> HBASE-13252-v1.patch, HBASE-13252-v2.patch, HBASE-13252-v2.patch
>
>
> (Need to):
>  - Remove CONNECTION_INSTANCES from ConnectionManager
>  - Remove HConnectionKey
>  - Remove 'managed' property from ClusterConnection, HCI and places where 
> it's used now
>  - AFAIS this property isn't visible to client (ClusterConnection is private 
> interface), so technically this would not even be backward-incompatible 
> change, and no release note needed?
>  - In fact, ConnectionManager can be removed, too.



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

Reply via email to