[ 
https://issues.apache.org/jira/browse/TRAFODION-1435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15511796#comment-15511796
 ] 

ASF GitHub Bot commented on TRAFODION-1435:
-------------------------------------------

Github user sbroeder commented on a diff in the pull request:

    https://github.com/apache/incubator-trafodion/pull/713#discussion_r79966026
  
    --- Diff: 
core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/SsccTransactionalTable.java
 ---
    @@ -274,6 +278,48 @@ public SsccDeleteTransactionalResponse 
call(SsccRegionService instance) throws I
                   throw new IOException(resultArray[0].getException());
               }
     
    +    public void deleteRegionTx(final long tid, final Delete delete, final 
boolean autoCommit) throws IOException {
    +      SingleVersionDeleteNotSupported.validateDelete(delete);
    +      final String regionName = 
super.getRegionLocation(delete.getRow()).getRegionInfo().getRegionNameAsString();
    +         Batch.Call<SsccRegionService, SsccDeleteRegionTxResponse> 
callable =
    +                new Batch.Call<SsccRegionService, 
SsccDeleteRegionTxResponse>() {
    +            ServerRpcController controller = new ServerRpcController();
    +            BlockingRpcCallback<SsccDeleteRegionTxResponse> rpcCallback =
    +            new BlockingRpcCallback<SsccDeleteRegionTxResponse>();
    +
    +            public SsccDeleteRegionTxResponse call(SsccRegionService 
instance) throws IOException {
    --- End diff --
    
    Good comment.  I don't think @Override is needed on any of the region 
operations since none are present in the super class


> 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
>            Assignee: Sean Broeder
>   Original Estimate: 672h
>  Remaining Estimate: 672h
>
> 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