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)