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();
}