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

Sean Broeder commented on TRAFODION-2348:
-----------------------------------------

The NullPointerException involved is returned at TrxTransactionState.jaba.tmpl 
when otherUpdate == null.  There is no test here for null, but that's okay 
because it can be handled as the exception that it is.

The real issue here is that a pending transaction in the check against list was 
converted to ABORTED while we are in the for loop checking other transactions.  
And because we universally return true in this case we are returning a conflict 
against an ABORTED transaction, which should never occur.  Catching the 
exception when otherUpdate is null is probably a good behavior, but we should 
check the status of otherUpdate when this occurs and if the status is ABORTED 
we should return false.

> TransactionState.hasConflict returns true if it gets a null pointer exception
> -----------------------------------------------------------------------------
>
>                 Key: TRAFODION-2348
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2348
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: dtm
>    Affects Versions: any, 2.1-incubating
>            Reporter: Sean Broeder
>            Assignee: Sean Broeder
>             Fix For: 1.3-incubating
>
>
> In the middle of hasConflict the TransactionState object compares its 
> writeOrder list to various other transactions.  In this case, we get a Null 
> pointer exception in the trasnaction to check against, so we return true to 
> has conflict and the transaction aborts.
> 2016-11-07 20:00:28,673 WARN 
> org.apache.hadoop.hbase.regionserver.transactional.TransactionState: 
> TrxTransactionState hasConflict: 
> Unable to get row - this Transaction [[transactionId: 12919375954 regionTX: 
> false status: PENDING neverReadOnly: false scan Size: 28 write Size: 14 
> startSQ: 34310]] 
> checkAgainst Transaction [[transactionId: 17214542234 regionTX: false status: 
> ABORTED neverReadOnly: false scan Size: 0 write Size: 0 startSQ: 34296 
> commitedSQ:34314]]  Exception:
> java.lang.NullPointerException
>         at 
> org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.hasConflict(TrxTransactionState.java:469)
>         at 
> org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.hasConflict(TrxTransactionState.java:438)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.hasConflict(TrxRegionEndpoint.java:6389)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.commitRequest(TrxRegionEndpoint.java:6138)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.commitRequest(TrxRegionEndpoint.java:6077)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.commitRequest(TrxRegionEndpoint.java:894)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService.callMethod(TrxRegionProtos.java:49510)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7054)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1746)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1728)
>         at 
> org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31447)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2035)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
>         at java.lang.Thread.run(Thread.java:745)
> 2016-11-07 20:00:28,674 ERROR 
> org.apache.hadoop.hbase.regionserver.transactional.TransactionState: 
> TrxTransactionState hasConflict: 
> Returning true. This transaction [transactionId: 12919375954 regionTX: false 
> status: PENDING neverReadOnly: false scan Size: 28 write Size: 14 startSQ: 
> 34310] Caught exception from transaction [transactionId: 17214542234 
> regionTX: false status: ABORTED neverReadOnly: false scan Size: 0 write Size: 
> 0 startSQ: 34296 commitedSQ:34314], regionInfo is 
> [TRAFODION.JAVABENCH.OE_ORDERLINE_192,\x00\x00\x00\x1D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,1478575978122.228b0109fcab4c57c25d7f1326f40f4e.],
>  exception
> java.lang.NullPointerException
>         at 
> org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.hasConflict(TrxTransactionState.java:469)
>         at 
> org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState.hasConflict(TrxTransactionState.java:438)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.hasConflict(TrxRegionEndpoint.java:6389)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.commitRequest(TrxRegionEndpoint.java:6138)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.commitRequest(TrxRegionEndpoint.java:6077)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.TrxRegionEndpoint.commitRequest(TrxRegionEndpoint.java:894)
>         at 
> org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService.callMethod(TrxRegionProtos.java:49510)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7054)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1746)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1728)
>         at 
> org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31447)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2035)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
>         at java.lang.Thread.run(Thread.java:745)



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

Reply via email to