[
https://issues.apache.org/jira/browse/PHOENIX-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16363046#comment-16363046
]
James Taylor commented on PHOENIX-4605:
---------------------------------------
FYI, [~ohads]. Not sure what we should do about
QueryServices.TRANSACTIONS_ENABLED (currently a boolean as well). Maybe it
should contain a list of supported/configured transaction providers? We use
that mostly in tests, but we also use it when we open a cluster connection to
conditionally establish a connection to the transaction manager. Is there any
initialization required for Omid along these lines? If so, should we add a new
TAL method?
{code}
private void openConnection() throws SQLException {
try {
boolean transactionsEnabled = props.getBoolean(
QueryServices.TRANSACTIONS_ENABLED,
QueryServicesOptions.DEFAULT_TRANSACTIONS_ENABLED);
this.connection =
HBaseFactoryProvider.getHConnectionFactory().createConnection(this.config);
GLOBAL_HCONNECTIONS_COUNTER.increment();
logger.info("HConnection established. Stacktrace for informational
purposes: " + connection + " " + LogUtil.getCallerStackTrace());
// only initialize the tx service client if needed and if we
succeeded in getting a connection
// to HBase
if (transactionsEnabled) {
initTxServiceClient();
}
} 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}
One more check needed would be in MutationState to disallow updates to both
Tephra and Omid tables in the same transaction.
> Add TRANSACTION_PROVIDER and DEFAULT_TRANSACTION_PROVIDER instead of using
> boolean
> ----------------------------------------------------------------------------------
>
> Key: PHOENIX-4605
> URL: https://issues.apache.org/jira/browse/PHOENIX-4605
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Priority: Major
>
> We should deprecate QueryServices.DEFAULT_TABLE_ISTRANSACTIONAL_ATTRIB and
> instead have a QueryServices.DEFAULT_TRANSACTION_PROVIDER now that we'll have
> two transaction providers: Tephra and Omid. Along the same lines, we should
> add a TRANSACTION_PROVIDER column to SYSTEM.CATALOG and stop using the
> IS_TRANSACTIONAL table property. For backwards compatibility, we can assume
> the provider is Tephra if the existing properties are set to true.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)