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

Roman Puchkovskiy updated IGNITE-24120:
---------------------------------------
    Description: 
In production code, the mentioned method is always used when there is a 
transaction, so it can be changed to accept transactionId (which is needed in 
non-direct RO replica requests to make it possible to lock LWM).

On the other hand, in test code, this method is always used in contextx where a 
transaction is not started. It seems that this is because we don't have even an 
internal API to create an RO transaction with a given readTimestamp.

It seems weird that an interface has a method that is only needed for tests 
(especially given that this method makes it more difficult to implement 
production code: txId is not available).

We could do one of the following:
 # Introduce an internal API that would allow to create a transaction with a 
given readTimestamp and then switch in tests to InternalTable#get() that 
accepts a transaction
 # Proceed using the test-only method, but add txId as a parameter to it and 
always pass some fake txId from tests

> Remove InternalTable#get() which does not accept transaction
> ------------------------------------------------------------
>
>                 Key: IGNITE-24120
>                 URL: https://issues.apache.org/jira/browse/IGNITE-24120
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>
> In production code, the mentioned method is always used when there is a 
> transaction, so it can be changed to accept transactionId (which is needed in 
> non-direct RO replica requests to make it possible to lock LWM).
> On the other hand, in test code, this method is always used in contextx where 
> a transaction is not started. It seems that this is because we don't have 
> even an internal API to create an RO transaction with a given readTimestamp.
> It seems weird that an interface has a method that is only needed for tests 
> (especially given that this method makes it more difficult to implement 
> production code: txId is not available).
> We could do one of the following:
>  # Introduce an internal API that would allow to create a transaction with a 
> given readTimestamp and then switch in tests to InternalTable#get() that 
> accepts a transaction
>  # Proceed using the test-only method, but add txId as a parameter to it and 
> always pass some fake txId from tests



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

Reply via email to