You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "James Taylor (JIRA)" <ji...@apache.org> on 2017/01/05 00:12:58 UTC
[jira] [Created] (PHOENIX-3564) Initialize transaction manager
client after opening HConnection
James Taylor created PHOENIX-3564:
-------------------------------------
Summary: Initialize transaction manager client after opening HConnection
Key: PHOENIX-3564
URL: https://issues.apache.org/jira/browse/PHOENIX-3564
Project: Phoenix
Issue Type: Bug
Reporter: James Taylor
Assignee: Thomas D'Silva
We should call after the HConnection has successfully been opened here in ConnectionQueryServicesImpl:
{code}
private void openConnection() throws SQLException {
try {
boolean transactionsEnabled = props.getBoolean(
QueryServices.TRANSACTIONS_ENABLED,
QueryServicesOptions.DEFAULT_TRANSACTIONS_ENABLED);
// only initialize the tx service client if needed
if (transactionsEnabled) {
initTxServiceClient();
}
this.connection = HBaseFactoryProvider.getHConnectionFactory().createConnection(this.config);
} catch (IOException e) {
throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_ESTABLISH_CONNECTION)
.setRootCause(e).build().buildException();
}
if (this.connection.isClosed()) { // TODO: why the heck doesn't this throw above?
throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_ESTABLISH_CONNECTION).build().buildException();
}
}
{code}
This will prevent multiple instantiations of TephraZKClientService and prevent many Zookeeper connections from being opened if an HConnection cannot be established.
We should also call TephraZKClientService.stop() in ConnectionQueryServicesImpl.close(). Although this doesn't appear to close the Zookeeper connection, it probably should (see TEPHRA-207).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)