Sean Broeder created TRAFODION-1435:
---------------------------------------

             Summary: SQL operations not always performed transactionally with 
AUTOCOMMIT OFF
                 Key: TRAFODION-1435
                 URL: https://issues.apache.org/jira/browse/TRAFODION-1435
             Project: Apache Trafodion
          Issue Type: Improvement
          Components: dtm
    Affects Versions: 0.6 (pre-incubation)
            Reporter: Sean Broeder


For single region, single row operations (both IDU DML as well as select) SQL 
will avoid beginning a transaction and perform the operation directly in HBase.

The feeling was that for single row operations a trasnaction was not necessary 
as HBase would make the operation atomic and provide the necessary guarantees.  
The problem is this circumvents the endpoint coprocessor and makes conflict 
detection with other concurrent transactions impossible.

For performance reasons we should try to approximate the autocommit behavior as 
much as possible while preserving the conflict detection.  We can achieve this 
by implementing 'region transactions' whereby the region will create its own 
transaction identifier when a nontransactional operation arrives in the 
coprocessor.  We will need to override all HTable nontransactional operations 
in both the TransactionalTable and SsccTransactionalTable classes.  The 
override will create a new transaction identifier specific to the region 
transaction and then use that for all modifications as if it were issued by the 
DTM.

The transaction identifier needs to be unique so that other threads performing 
similar operations do not get confused at conflict resolution time.  One 
possibility is to maintain an AtomicLong in the region that can be incremented 
whenever such a transaction is needed.  This keeps all processing inside the 
region and eliminates any RPC to another server process.



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

Reply via email to