[
https://issues.apache.org/jira/browse/PHOENIX-901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13950562#comment-13950562
]
Hudson commented on PHOENIX-901:
--------------------------------
SUCCESS: Integrated in Apache Phoenix - Branch:3.0 #60 (See
[https://builds.apache.org/job/Phoenix-3.0/60/])
PHOENIX-901 Ensure ConnectionQueryServices only initialized once (jamestaylor:
rev f5140d82483ba9dee85bfa2fc564acce76faf43b)
* phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDriver.java
> Ensure ConnectionQueryServices only initialized once
> ----------------------------------------------------
>
> Key: PHOENIX-901
> URL: https://issues.apache.org/jira/browse/PHOENIX-901
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: James Taylor
> Attachments: phoenix.patch, phoenix_2.patch, phoenix_3.patch,
> phoenix_4.patch
>
>
> We should call connectionQueryServices#init in the else block of this code:
> {code}
> @Override
> protected ConnectionQueryServices getConnectionQueryServices(String url,
> Properties info) throws SQLException {
> checkClosed();
> ConnectionInfo connInfo = ConnectionInfo.create(url);
> ConnectionInfo normalizedConnInfo =
> connInfo.normalize(getQueryServices().getProps());
> ConnectionQueryServices connectionQueryServices =
> connectionQueryServicesMap.get(normalizedConnInfo);
> if (connectionQueryServices == null) {
> if (normalizedConnInfo.isConnectionless()) {
> connectionQueryServices = new
> ConnectionlessQueryServicesImpl(getQueryServices());
> } else {
> connectionQueryServices = new
> ConnectionQueryServicesImpl(getQueryServices(), normalizedConnInfo);
> }
> connectionQueryServices.init(url, info);
> ConnectionQueryServices prevValue =
> connectionQueryServicesMap.putIfAbsent(normalizedConnInfo,
> connectionQueryServices);
> if (prevValue != null) {
> connectionQueryServices = prevValue;
> }
> }
> return connectionQueryServices;
> }
> {code}
> like this instead:
> {code}
> @Override
> protected ConnectionQueryServices getConnectionQueryServices(String url,
> Properties info) throws SQLException {
> checkClosed();
> ConnectionInfo connInfo = ConnectionInfo.create(url);
> ConnectionInfo normalizedConnInfo =
> connInfo.normalize(getQueryServices().getProps());
> ConnectionQueryServices connectionQueryServices =
> connectionQueryServicesMap.get(normalizedConnInfo);
> if (connectionQueryServices == null) {
> if (normalizedConnInfo.isConnectionless()) {
> connectionQueryServices = new
> ConnectionlessQueryServicesImpl(getQueryServices());
> } else {
> connectionQueryServices = new
> ConnectionQueryServicesImpl(getQueryServices(), normalizedConnInfo);
> }
> ConnectionQueryServices prevValue =
> connectionQueryServicesMap.putIfAbsent(normalizedConnInfo,
> connectionQueryServices);
> if (prevValue != null) {
> connectionQueryServices = prevValue;
> } else {
> connectionQueryServices.init(url, info);
> }
> }
> return connectionQueryServices;
> }
> {code}
> This has the potential to open multiple HConnections, but it's unclear if
> this causes harm, as the same, original ConnectionQueryService is returned
> and used.
--
This message was sent by Atlassian JIRA
(v6.2#6252)