[
https://issues.apache.org/jira/browse/IGNITE-24580?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roman Puchkovskiy updated IGNITE-24580:
---------------------------------------
Description:
Every operation in an RW transaction that touches a partition must add the
corresponding tableId to the partition enlistment enformation. Current code is
fragile in this regard: sometimes, tx.enlist() (which guarantees the addition
of tableId) is not invoked, instead the enlistment information is obtained via
tx.enlistedPartition() and then addTableId() is invoked on it.
# A test has to be added that will make sure that every operation on
InternalTable that touches a partition in an RW transaction adds tableId to the
enlistment, even if the partition was already enlisted as a whole
# The pattern 'take enlistment vith tx.enlistedPartition() and, if exists,
call addTableId()' should be replaced with always calling a method like
tx.enlist(). Probably, a return value is to be added to tx.enlist() to signal
that the enlistment was already there.
> Make sure tableId is added to enlistment in InternalTableImpl
> -------------------------------------------------------------
>
> Key: IGNITE-24580
> URL: https://issues.apache.org/jira/browse/IGNITE-24580
> Project: Ignite
> Issue Type: Improvement
> Reporter: Roman Puchkovskiy
> Priority: Major
> Labels: ignite-3
>
> Every operation in an RW transaction that touches a partition must add the
> corresponding tableId to the partition enlistment enformation. Current code
> is fragile in this regard: sometimes, tx.enlist() (which guarantees the
> addition of tableId) is not invoked, instead the enlistment information is
> obtained via tx.enlistedPartition() and then addTableId() is invoked on it.
> # A test has to be added that will make sure that every operation on
> InternalTable that touches a partition in an RW transaction adds tableId to
> the enlistment, even if the partition was already enlisted as a whole
> # The pattern 'take enlistment vith tx.enlistedPartition() and, if exists,
> call addTableId()' should be replaced with always calling a method like
> tx.enlist(). Probably, a return value is to be added to tx.enlist() to signal
> that the enlistment was already there.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)