[ https://issues.apache.org/jira/browse/IGNITE-24329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Tupitsyn updated IGNITE-24329: ------------------------------------ Description: See how lazy tx works in Java client - we save observableTs when the user starts the transaction: https://github.com/apache/ignite-3/blob/main/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientLazyTransaction.java The following scenario does not work as expected currently, because we take observableTs only later when the transaction is used for the first time in some operation: {code:C#} await using ITransaction roTx = await client.Transactions.BeginAsync(new TransactionOptions(ReadOnly: true)); await pocoView.UpsertAsync(transaction:null, new Person(3, "JACK-2")); // Update after RO TX. Option<Person> roTxRes = await pocoView.GetAsync(roTx, new Person(3, null!)); // Expect to see old data Option<Person> actualRes = await pocoView.GetAsync(null, new Person(3, null!)); {code} was: See how lazy tx works in Java client - we save observableTs when the user starts the transaction: https://github.com/apache/ignite-3/blob/main/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientLazyTransaction.java The following scenario does not work as expected currently: {code:C#} await using ITransaction roTx = await client.Transactions.BeginAsync(new TransactionOptions(ReadOnly: true)); await pocoView.UpsertAsync(transaction:null, new Person(3, "JACK-2")); // Update after RO TX. Option<Person> roTxRes = await pocoView.GetAsync(roTx, new Person(3, null!)); // Expect to see old data Option<Person> actualRes = await pocoView.GetAsync(null, new Person(3, null!)); {code} > .NET: LazyTransaction uses incorrect ObservableTimestamp > -------------------------------------------------------- > > Key: IGNITE-24329 > URL: https://issues.apache.org/jira/browse/IGNITE-24329 > Project: Ignite > Issue Type: Bug > Components: platforms, thin client > Reporter: Pavel Tupitsyn > Assignee: Pavel Tupitsyn > Priority: Critical > Labels: ignite-3, important > Fix For: 3.0 > > > See how lazy tx works in Java client - we save observableTs when the user > starts the transaction: > https://github.com/apache/ignite-3/blob/main/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientLazyTransaction.java > The following scenario does not work as expected currently, because we take > observableTs only later when the transaction is used for the first time in > some operation: > {code:C#} > await using ITransaction roTx = await client.Transactions.BeginAsync(new > TransactionOptions(ReadOnly: true)); > await pocoView.UpsertAsync(transaction:null, new Person(3, "JACK-2")); // > Update after RO TX. > Option<Person> roTxRes = await pocoView.GetAsync(roTx, new Person(3, null!)); > // Expect to see old data > Option<Person> actualRes = await pocoView.GetAsync(null, new Person(3, > null!)); > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)