From 9d761ba3ec7bce1c22f6623a42a4e94be475309f Mon Sep 17 00:00:00 2001 From: Nikolay Perfilov Date: Fri, 22 Mar 2024 16:49:16 +0300 Subject: [PATCH] Update Examples to use new TableTransaction instead of old deprecated Transaction --- .../src/main/java/tech/ydb/example/App.java | 15 +++++++++------ pom.xml | 2 +- .../ydb/examples/simple/ComplexTransaction.java | 10 ++++++---- .../topic/transactions/TransactionReadAsync.java | 8 ++++---- .../topic/transactions/TransactionReadSync.java | 8 ++++---- .../topic/transactions/TransactionWriteAsync.java | 8 ++++---- .../topic/transactions/TransactionWriteSync.java | 8 ++++---- 7 files changed, 32 insertions(+), 27 deletions(-) diff --git a/basic_example/src/main/java/tech/ydb/example/App.java b/basic_example/src/main/java/tech/ydb/example/App.java index f515841..367ce12 100644 --- a/basic_example/src/main/java/tech/ydb/example/App.java +++ b/basic_example/src/main/java/tech/ydb/example/App.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import tech.ydb.auth.iam.CloudAuthHelper; +import tech.ydb.common.transaction.TxMode; import tech.ydb.core.Status; import tech.ydb.core.grpc.GrpcReadStream; import tech.ydb.core.grpc.GrpcTransport; @@ -24,6 +25,7 @@ import tech.ydb.table.result.ResultSetReader; import tech.ydb.table.settings.BulkUpsertSettings; import tech.ydb.table.settings.ExecuteScanQuerySettings; +import tech.ydb.table.transaction.TableTransaction; import tech.ydb.table.transaction.Transaction; import tech.ydb.table.transaction.TxControl; import tech.ydb.table.values.ListType; @@ -362,8 +364,9 @@ private void multiStepTransaction(long seriesID, long seasonID) { private void tclTransaction() { retryCtx.supplyStatus(session -> { - Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) - .join().getValue(); + // Create new transaction. + // It is not active and has no id until any query is executed on it + TableTransaction transaction = session.createNewTransaction(TxMode.SERIALIZABLE_RW); String query = "DECLARE $airDate AS Date; " @@ -371,10 +374,10 @@ private void tclTransaction() { Params params = Params.of("$airDate", PrimitiveValue.newDate(Instant.now())); - // Execute data query. - // Transaction control settings continues active transaction (tx) - TxControl txControl = TxControl.id(transaction).setCommitTx(false); - DataQueryResult result = session.executeDataQuery(query, txControl, params) + // Execute data query on new transaction. + // Transaction will be created on server and become active + // Query will be executed on it, but transaction will not be committed + DataQueryResult result = transaction.executeDataQuery(query, params) .join().getValue(); logger.info("get transaction {}", result.getTxId()); diff --git a/pom.xml b/pom.xml index 1f1188a..d2588e4 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 2.22.1 1.82 - 2.1.11 + 2.2.0-SNAPSHOT diff --git a/ydb-cookbook/src/main/java/tech/ydb/examples/simple/ComplexTransaction.java b/ydb-cookbook/src/main/java/tech/ydb/examples/simple/ComplexTransaction.java index b269a70..a2e806d 100644 --- a/ydb-cookbook/src/main/java/tech/ydb/examples/simple/ComplexTransaction.java +++ b/ydb-cookbook/src/main/java/tech/ydb/examples/simple/ComplexTransaction.java @@ -1,6 +1,8 @@ package tech.ydb.examples.simple; import java.time.Duration; + +import tech.ydb.common.transaction.TxMode; import tech.ydb.core.grpc.GrpcTransport; import tech.ydb.examples.SimpleExample; @@ -8,7 +10,7 @@ import tech.ydb.table.TableClient; import tech.ydb.table.description.TableDescription; import tech.ydb.table.query.DataQueryResult; -import tech.ydb.table.transaction.Transaction; +import tech.ydb.table.transaction.TableTransaction; import tech.ydb.table.transaction.TxControl; import tech.ydb.table.values.PrimitiveType; @@ -40,12 +42,12 @@ protected void run(GrpcTransport transport, String pathPrefix) { .join() .expectSuccess("cannot create table"); - Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) + TableTransaction transaction = session.beginTransaction(TxMode.SERIALIZABLE_RW) .join() .getValue(); String query1 = "UPSERT INTO [" + tablePath + "] (key, value) VALUES (1, 'one');"; - DataQueryResult result1 = session.executeDataQuery(query1, TxControl.id(transaction)) + DataQueryResult result1 = transaction.executeDataQuery(query1) .join() .getValue(); System.out.println("--[insert1]-------------------"); @@ -53,7 +55,7 @@ protected void run(GrpcTransport transport, String pathPrefix) { System.out.println("------------------------------"); String query2 = "UPSERT INTO [" + tablePath + "] (key, value) VALUES (2, 'two');"; - DataQueryResult result2 = session.executeDataQuery(query2, TxControl.id(transaction)) + DataQueryResult result2 = transaction.executeDataQuery(query2) .join() .getValue(); System.out.println("--[insert2]-------------------"); diff --git a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadAsync.java b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadAsync.java index 42205fc..806d0d4 100644 --- a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadAsync.java +++ b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadAsync.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tech.ydb.common.transaction.TxMode; import tech.ydb.core.Result; import tech.ydb.core.Status; import tech.ydb.core.grpc.GrpcTransport; @@ -16,6 +17,7 @@ import tech.ydb.table.TableClient; import tech.ydb.table.impl.PooledTableClient; import tech.ydb.table.rpc.grpc.GrpcTableRpc; +import tech.ydb.table.transaction.TableTransaction; import tech.ydb.table.transaction.Transaction; import tech.ydb.table.transaction.TxControl; import tech.ydb.topic.TopicClient; @@ -137,12 +139,10 @@ public void onMessages(DataReceivedEvent event) { return; // retry or shutdown } Session session = sessionResult.getValue(); - Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) - .join() - .getValue(); + TableTransaction transaction = session.createNewTransaction(TxMode.SERIALIZABLE_RW); // do something else in transaction - session.executeDataQuery("SELECT 1", TxControl.tx(transaction)).join(); + transaction.executeDataQuery("SELECT 1").join(); // analyzeQueryResultIfNeeded(); Status updateStatus = reader.updateOffsetsInTransaction(transaction, diff --git a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadSync.java b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadSync.java index 99a77ea..9bd91b9 100644 --- a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadSync.java +++ b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionReadSync.java @@ -6,11 +6,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tech.ydb.common.transaction.TxMode; import tech.ydb.core.Result; import tech.ydb.core.grpc.GrpcTransport; import tech.ydb.examples.SimpleExample; import tech.ydb.table.Session; import tech.ydb.table.TableClient; +import tech.ydb.table.transaction.TableTransaction; import tech.ydb.table.transaction.Transaction; import tech.ydb.table.transaction.TxControl; import tech.ydb.topic.TopicClient; @@ -56,12 +58,10 @@ protected void run(GrpcTransport transport, String pathPrefix) { return; // retry or shutdown } Session session = sessionResult.getValue(); - Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) - .join() - .getValue(); + TableTransaction transaction = session.createNewTransaction(TxMode.SERIALIZABLE_RW); // do something else in transaction - session.executeDataQuery("SELECT 1", TxControl.tx(transaction)).join(); + transaction.executeDataQuery("SELECT 1").join(); // analyzeQueryResultIfNeeded(); //Session session diff --git a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteAsync.java b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteAsync.java index b31a1e7..dfbb7ec 100644 --- a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteAsync.java +++ b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteAsync.java @@ -9,11 +9,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tech.ydb.common.transaction.TxMode; import tech.ydb.core.Result; import tech.ydb.core.grpc.GrpcTransport; import tech.ydb.examples.SimpleExample; import tech.ydb.table.Session; import tech.ydb.table.TableClient; +import tech.ydb.table.transaction.TableTransaction; import tech.ydb.table.transaction.Transaction; import tech.ydb.table.transaction.TxControl; import tech.ydb.topic.TopicClient; @@ -70,12 +72,10 @@ protected void run(GrpcTransport transport, String pathPrefix) { return; // retry or shutdown } Session session = sessionResult.getValue(); - Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) - .join() - .getValue(); + TableTransaction transaction = session.createNewTransaction(TxMode.SERIALIZABLE_RW); // do something else in transaction - session.executeDataQuery("SELECT 1", TxControl.tx(transaction)).join(); + transaction.executeDataQuery("SELECT 1").join(); // analyzeQueryResultIfNeeded(); try { diff --git a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteSync.java b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteSync.java index 5ed8253..735290c 100644 --- a/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteSync.java +++ b/ydb-cookbook/src/main/java/tech/ydb/examples/topic/transactions/TransactionWriteSync.java @@ -8,11 +8,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import tech.ydb.common.transaction.BaseTransaction; +import tech.ydb.common.transaction.TxMode; import tech.ydb.core.Result; import tech.ydb.core.grpc.GrpcTransport; import tech.ydb.examples.SimpleExample; import tech.ydb.table.Session; import tech.ydb.table.TableClient; +import tech.ydb.table.transaction.TableTransaction; import tech.ydb.table.transaction.Transaction; import tech.ydb.table.transaction.TxControl; import tech.ydb.topic.TopicClient; @@ -65,12 +67,10 @@ protected void run(GrpcTransport transport, String pathPrefix) { return; // retry or shutdown } Session session = sessionResult.getValue(); - Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) - .join() - .getValue(); + TableTransaction transaction = session.createNewTransaction(TxMode.SERIALIZABLE_RW); // do something else in transaction - session.executeDataQuery("SELECT 1", TxControl.tx(transaction)).join(); + transaction.executeDataQuery("SELECT 1").join(); // analyzeQueryResultIfNeeded(); try { String messageString = "message" + i;