[
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)