[ 
https://issues.apache.org/jira/browse/IGNITE-20205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denis Chudov updated IGNITE-20205:
----------------------------------
    Description: 
TxLocalTest is actually a mock of transactional logic based on local dummy 
table. Seems there are some problems with finalizing the transactions 
transferring money between accounts which causes lock exceptions on checking 
final sum over all accounts. Most likely there is a problem with mock because 
there is no similar problem with other test classes for this test.

The following assertion occurs in PartitionListener:
{code:java}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:a143f277-4992-491e-afca-2c06814c1737 Write command must have an index 
greater than that of storages [commandIndex=83248, mvAppliedIndex=83270, 
txStateAppliedIndex=83266, cmd=UpdateCommandImpl [full=false, 
rowMessage=BinaryRowMessageImpl [binaryTuple=java.nio.HeapByteBuffer[pos=0 
lim=8 cap=8], schemaVersion=1], rowUuid=0b19d656-2c55-48fb-9955-a6ca0bbf08ca, 
safeTimeLong=395351, tablePartitionId=TablePartitionIdMessageImpl 
[partitionId=0, tableId=10001], txId=00000000-0006-082f-0000-0000deadbeef]] 
==>{code}
Most likely there are races in mocks of TxLocalTest and DummyInternalTableImpl 
classes, because the test is multi-threaded and mocks have no synchronization.

Seems that synchronized block for the mock of RaftGroupService in 
DummyInternalTableImpl should work.

  was:
TxLocalTest is actually a mock of transactional logic based on local dummy 
table. Seems there are some problems with finalizing the transactions 
transferring money between accounts which causes lock exceptions on checking 
final sum over all accounts. Most likely there is a problem with mock because 
there is no similar problem with other test classes for this test.

The following assertion occurs in PartitionListener:
{code:java}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
TraceId:a143f277-4992-491e-afca-2c06814c1737 Write command must have an index 
greater than that of storages [commandIndex=83248, mvAppliedIndex=83270, 
txStateAppliedIndex=83266, cmd=UpdateCommandImpl [full=false, 
rowMessage=BinaryRowMessageImpl [binaryTuple=java.nio.HeapByteBuffer[pos=0 
lim=8 cap=8], schemaVersion=1], rowUuid=0b19d656-2c55-48fb-9955-a6ca0bbf08ca, 
safeTimeLong=395351, tablePartitionId=TablePartitionIdMessageImpl 
[partitionId=0, tableId=10001], txId=00000000-0006-082f-0000-0000deadbeef]] 
==>{code}
Most likely there are races in mocks of TxLocalTest and DummyInternalTableImpl 
classes, because the test is multi-threaded and mocks have no synchronization.


> TxLocalTest#testBalance is flaky
> --------------------------------
>
>                 Key: IGNITE-20205
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20205
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> TxLocalTest is actually a mock of transactional logic based on local dummy 
> table. Seems there are some problems with finalizing the transactions 
> transferring money between accounts which causes lock exceptions on checking 
> final sum over all accounts. Most likely there is a problem with mock because 
> there is no similar problem with other test classes for this test.
> The following assertion occurs in PartitionListener:
> {code:java}
> org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
> TraceId:a143f277-4992-491e-afca-2c06814c1737 Write command must have an index 
> greater than that of storages [commandIndex=83248, mvAppliedIndex=83270, 
> txStateAppliedIndex=83266, cmd=UpdateCommandImpl [full=false, 
> rowMessage=BinaryRowMessageImpl [binaryTuple=java.nio.HeapByteBuffer[pos=0 
> lim=8 cap=8], schemaVersion=1], rowUuid=0b19d656-2c55-48fb-9955-a6ca0bbf08ca, 
> safeTimeLong=395351, tablePartitionId=TablePartitionIdMessageImpl 
> [partitionId=0, tableId=10001], txId=00000000-0006-082f-0000-0000deadbeef]] 
> ==>{code}
> Most likely there are races in mocks of TxLocalTest and 
> DummyInternalTableImpl classes, because the test is multi-threaded and mocks 
> have no synchronization.
> Seems that synchronized block for the mock of RaftGroupService in 
> DummyInternalTableImpl should work.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to