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