This is an automated email from the ASF dual-hosted git repository.

ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 248c989cf9 IGNITE-18932 Remove Transaction#readTimestamp  (#1736)
248c989cf9 is described below

commit 248c989cf9afcc12f519284fa3561d463b832956
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Wed Mar 1 19:28:56 2023 +0300

    IGNITE-18932 Remove Transaction#readTimestamp  (#1736)
    
    `readTimestamp` exposes internal details and uses internal 
`HybridTimestamp` class, it should not be on public API.
    * Move `readTimestamp` from `Transaction` to `InternalTransaction`.
    * Remove `readTimestamp` from the client protocol.
---
 .../src/main/java/org/apache/ignite/tx/Transaction.java   |  9 ---------
 .../requests/tx/ClientTransactionBeginRequest.java        |  9 ---------
 .../ignite/internal/client/tx/ClientTransaction.java      | 15 +--------------
 .../ignite/internal/client/tx/ClientTransactions.java     |  4 +---
 .../client/RepeatedFinishClientTransactionTest.java       |  8 ++++----
 .../runner/app/client/ItThinClientTransactionsTest.java   | 14 ++------------
 .../ignite/internal/sql/engine/IgniteSqlApiTest.java      |  6 ------
 .../ignite/distributed/ItTxDistributedTestSingleNode.java |  5 +++--
 .../apache/ignite/internal/tx/InternalTransaction.java    |  9 +++++++++
 9 files changed, 20 insertions(+), 59 deletions(-)

diff --git a/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java 
b/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java
index 5d647c436b..8629257c60 100644
--- a/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java
+++ b/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java
@@ -18,8 +18,6 @@
 package org.apache.ignite.tx;
 
 import java.util.concurrent.CompletableFuture;
-import org.apache.ignite.internal.hlc.HybridTimestamp;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * The transaction.
@@ -63,11 +61,4 @@ public interface Transaction {
      * @return {code true} if given transaction is a read-only, {@code false 
otherwise}.
      */
     boolean isReadOnly();
-
-    /**
-     * Returns read timestamp for the given transaction if it is a read-only 
one or {code null} otherwise.
-     *
-     * @return Read timestamp for the given transaction if it is a read-only 
one or {code null} otherwise.
-     */
-    @Nullable HybridTimestamp readTimestamp();
 }
diff --git 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/tx/ClientTransactionBeginRequest.java
 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/tx/ClientTransactionBeginRequest.java
index a3476835ab..2a311feefd 100644
--- 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/tx/ClientTransactionBeginRequest.java
+++ 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/tx/ClientTransactionBeginRequest.java
@@ -55,15 +55,6 @@ public class ClientTransactionBeginRequest {
             try {
                 long resourceId = resources.put(new ClientResource(tx, 
tx::rollbackAsync));
                 out.packLong(resourceId);
-
-                var readTs = tx.readTimestamp();
-
-                if (readTs != null) {
-                    out.packLong(readTs.getPhysical());
-                    out.packInt(readTs.getLogical());
-                } else {
-                    out.packNil();
-                }
             } catch (IgniteInternalCheckedException e) {
                 tx.rollback();
                 throw new IgniteInternalException(e.getMessage(), e);
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
index dd8c4ec4d3..d82521e62c 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransaction.java
@@ -24,12 +24,10 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.ignite.internal.client.ClientChannel;
 import org.apache.ignite.internal.client.proto.ClientOp;
-import org.apache.ignite.internal.hlc.HybridTimestamp;
 import org.apache.ignite.lang.IgniteException;
 import org.apache.ignite.tx.Transaction;
 import org.apache.ignite.tx.TransactionException;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * Client transaction.
@@ -47,21 +45,16 @@ public class ClientTransaction implements Transaction {
     /** Read-only flag. */
     private final boolean isReadOnly;
 
-    /** Read timestamp. */
-    @Nullable
-    private final HybridTimestamp readTs;
-
     /**
      * Constructor.
      *
      * @param ch Channel that the transaction belongs to.
      * @param id Transaction id.
      */
-    public ClientTransaction(ClientChannel ch, long id, boolean isReadOnly, 
@Nullable HybridTimestamp readTs) {
+    public ClientTransaction(ClientChannel ch, long id, boolean isReadOnly) {
         this.ch = ch;
         this.id = id;
         this.isReadOnly = isReadOnly;
-        this.readTs = readTs;
     }
 
     /**
@@ -128,12 +121,6 @@ public class ClientTransaction implements Transaction {
         return isReadOnly;
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public HybridTimestamp readTimestamp() {
-        return readTs;
-    }
-
     /**
      * Gets the internal transaction from the given public transaction. Throws 
an exception if the given transaction is
      * not an instance of {@link ClientTransaction}.
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
index e77e4bba26..b2102b4e8f 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/tx/ClientTransactions.java
@@ -24,7 +24,6 @@ import org.apache.ignite.internal.client.PayloadInputChannel;
 import org.apache.ignite.internal.client.ReliableChannel;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
 import org.apache.ignite.internal.client.proto.ClientOp;
-import org.apache.ignite.internal.hlc.HybridTimestamp;
 import org.apache.ignite.tx.IgniteTransactions;
 import org.apache.ignite.tx.Transaction;
 import org.apache.ignite.tx.TransactionOptions;
@@ -74,8 +73,7 @@ public class ClientTransactions implements IgniteTransactions 
{
         ClientMessageUnpacker in = r.in();
 
         long id = in.unpackLong();
-        HybridTimestamp readTs = in.tryUnpackNil() ? null : new 
HybridTimestamp(in.unpackLong(), in.unpackInt());
 
-        return new ClientTransaction(r.clientChannel(), id, isReadOnly, 
readTs);
+        return new ClientTransaction(r.clientChannel(), id, isReadOnly);
     }
 }
diff --git 
a/modules/client/src/test/java/org/apache/ignite/internal/client/RepeatedFinishClientTransactionTest.java
 
b/modules/client/src/test/java/org/apache/ignite/internal/client/RepeatedFinishClientTransactionTest.java
index 6115cd0885..8a93a79066 100644
--- 
a/modules/client/src/test/java/org/apache/ignite/internal/client/RepeatedFinishClientTransactionTest.java
+++ 
b/modules/client/src/test/java/org/apache/ignite/internal/client/RepeatedFinishClientTransactionTest.java
@@ -47,7 +47,7 @@ public class RepeatedFinishClientTransactionTest {
 
         TestClientChannel clientChannel = new 
TestClientChannel(txFinishStartedLatch, secondFinishLatch);
 
-        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false, 
null);
+        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false);
 
         CompletableFuture<Object> fut = new CompletableFuture<>();
 
@@ -85,7 +85,7 @@ public class RepeatedFinishClientTransactionTest {
 
         TestClientChannel clientChannel = new 
TestClientChannel(txFinishStartedLatch, secondFinishLatch);
 
-        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false, 
null);
+        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false);
 
         CompletableFuture<Object> fut = new CompletableFuture<>();
 
@@ -122,7 +122,7 @@ public class RepeatedFinishClientTransactionTest {
 
         when(clientChannel.serviceAsync(anyInt(), any(), 
any())).thenReturn(failedFuture(new Exception("Expected exception.")));
 
-        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false, 
null);
+        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false);
 
         CompletableFuture<Object> fut = new CompletableFuture<>();
 
@@ -148,7 +148,7 @@ public class RepeatedFinishClientTransactionTest {
 
         when(clientChannel.serviceAsync(anyInt(), any(), 
any())).thenReturn(failedFuture(new Exception("Expected exception.")));
 
-        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false, 
null);
+        ClientTransaction tx = new ClientTransaction(clientChannel, 1, false);
 
         CompletableFuture<Object> fut = new CompletableFuture<>();
 
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
index dd2b77777b..05aa8da742 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientTransactionsTest.java
@@ -22,8 +22,6 @@ import static org.hamcrest.Matchers.containsString;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -32,7 +30,6 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.client.IgniteClient;
-import org.apache.ignite.internal.hlc.HybridTimestamp;
 import org.apache.ignite.lang.ErrorGroups;
 import org.apache.ignite.lang.IgniteException;
 import org.apache.ignite.table.KeyValueView;
@@ -250,11 +247,6 @@ public class ItThinClientTransactionsTest extends 
ItAbstractThinClientTest {
             public boolean isReadOnly() {
                 return false;
             }
-
-            @Override
-            public HybridTimestamp readTimestamp() {
-                return null;
-            }
         };
 
         var ex = assertThrows(IgniteException.class, () -> kvView().put(tx, 1, 
"1"));
@@ -329,21 +321,19 @@ public class ItThinClientTransactionsTest extends 
ItAbstractThinClientTest {
     }
 
     @Test
-    void testReadOnlyTxHasReadTimestamp() {
+    void testReadOnlyTxAttributes() {
         Transaction tx = client().transactions().begin(new 
TransactionOptions().readOnly(true));
 
         assertTrue(tx.isReadOnly());
-        assertNotNull(tx.readTimestamp());
 
         tx.rollback();
     }
 
     @Test
-    void testReadWriteTxHasNoReadTimestamp() {
+    void testReadWriteTxAttributes() {
         Transaction tx = client().transactions().begin();
 
         assertFalse(tx.isReadOnly());
-        assertNull(tx.readTimestamp());
 
         tx.rollback();
     }
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
index 6b7a652666..f37f445801 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
@@ -35,7 +35,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-import org.apache.ignite.internal.hlc.HybridTimestamp;
 import org.apache.ignite.internal.schema.Column;
 import org.apache.ignite.internal.schema.NativeTypes;
 import org.apache.ignite.internal.schema.SchemaDescriptor;
@@ -670,10 +669,5 @@ public class IgniteSqlApiTest {
         public boolean isReadOnly() {
             return false;
         }
-
-        @Override
-        public HybridTimestamp readTimestamp() {
-            return null;
-        }
     }
 }
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
index 80755377d8..6680ef65cb 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
@@ -87,6 +87,7 @@ import 
org.apache.ignite.internal.table.distributed.replicator.TablePartitionId;
 import org.apache.ignite.internal.table.distributed.storage.InternalTableImpl;
 import org.apache.ignite.internal.table.impl.DummySchemaManagerImpl;
 import org.apache.ignite.internal.thread.NamedThreadFactory;
+import org.apache.ignite.internal.tx.InternalTransaction;
 import org.apache.ignite.internal.tx.TxManager;
 import org.apache.ignite.internal.tx.impl.HeapLockManager;
 import org.apache.ignite.internal.tx.impl.IgniteTransactionsImpl;
@@ -661,11 +662,11 @@ public class ItTxDistributedTestSingleNode extends 
TxAbstractTest {
     public void testIgniteTransactionsAndReadTimestamp() {
         Transaction readWriteTx = igniteTransactions.begin();
         assertFalse(readWriteTx.isReadOnly());
-        assertNull(readWriteTx.readTimestamp());
+        assertNull(((InternalTransaction) readWriteTx).readTimestamp());
 
         Transaction readOnlyTx = igniteTransactions.begin(new 
TransactionOptions().readOnly(true));
         assertTrue(readOnlyTx.isReadOnly());
-        assertNotNull(readOnlyTx.readTimestamp());
+        assertNotNull(((InternalTransaction) readOnlyTx).readTimestamp());
 
         readWriteTx.commit();
 
diff --git 
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/InternalTransaction.java
 
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/InternalTransaction.java
index c66ddbc260..5ef16329b4 100644
--- 
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/InternalTransaction.java
+++ 
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/InternalTransaction.java
@@ -19,11 +19,13 @@ package org.apache.ignite.internal.tx;
 
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.internal.hlc.HybridTimestamp;
 import org.apache.ignite.internal.replicator.ReplicationGroupId;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.network.ClusterNode;
 import org.apache.ignite.tx.Transaction;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * An extension of a transaction for internal usage.
@@ -84,4 +86,11 @@ public interface InternalTransaction extends Transaction {
      */
     @Deprecated
     void enlistResultFuture(CompletableFuture<?> resultFuture);
+
+    /**
+     * Returns read timestamp for the given transaction if it is a read-only 
one or {code null} otherwise.
+     *
+     * @return Read timestamp for the given transaction if it is a read-only 
one or {code null} otherwise.
+     */
+    @Nullable HybridTimestamp readTimestamp();
 }

Reply via email to