@@ -2171,9 +2171,17 @@ public void testBatchWriteAtLeastOnce() {
21712171 }
21722172
21732173 @ Test
2174- public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_DuringAborted () {
2175- // Whenever an ABORTED exception occurs, the transaction ID that caused the ABORT should be set
2176- // in the AbortedException class.
2174+ public void
2175+ testRWTransactionWithTransactionManager_CommitAborted_SetsTransactionId_AndUsedInNewInstance () {
2176+ // The below test verifies the behaviour of begin(AbortedException) method which is used to
2177+ // maintain transaction priority if resetForRetry() is not called.
2178+
2179+ // This test performs the following steps:
2180+ // 1. Simulates an ABORTED exception during commit and verifies that the transaction ID is
2181+ // included in the AbortedException.
2182+ // 2. Passes the ABORTED exception to the begin(AbortedException) method of a new
2183+ // TransactionManager, and verifies that the transaction ID from the failed transaction is sent
2184+ // during the inline begin of the first request.
21772185 DatabaseClientImpl client =
21782186 (DatabaseClientImpl ) spanner .getDatabaseClient (DatabaseId .of ("p" , "i" , "d" ));
21792187 // Force the Commit RPC to return Aborted the first time it is called. The exception is cleared
@@ -2202,11 +2210,12 @@ public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_Du
22022210 exception = e ;
22032211 }
22042212 }
2213+ // Verify that the transactionID of the aborted transaction is set.
22052214 assertNotNull (abortedTransactionID );
22062215 assertNotNull (exception );
22072216 mockSpanner .clearRequests ();
22082217
2209- // Use AbortedException while creating a new instance of TransactionManager
2218+ // Pass AbortedException while invoking begin on the new manager instance.
22102219 try (TransactionManager manager = client .transactionManager ()) {
22112220 TransactionContext transaction = manager .begin (exception );
22122221 while (true ) {
@@ -2226,6 +2235,8 @@ public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_Du
22262235 }
22272236 }
22282237
2238+ // Verify that the ExecuteSqlRequest with the inline begin passes the transactionID of the
2239+ // previously aborted transaction.
22292240 List <ExecuteSqlRequest > executeSqlRequests =
22302241 mockSpanner .getRequestsOfType (ExecuteSqlRequest .class );
22312242 assertEquals (1 , executeSqlRequests .size ());
@@ -2253,9 +2264,13 @@ public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_Du
22532264
22542265 @ Test
22552266 public void
2256- testReadWriteTransactionUsingTransactionManager_SetsTransactionID_DuringAbortedInExecuteSql () {
2257- // Whenever an ABORTED exception occurs, the transaction ID that caused the ABORT should be set
2258- // in the AbortedException class.
2267+ testRWTransactionWithTransactionManager_ExecuteSQLAborted_SetsTransactionId_AndUsedInNewInstance () {
2268+ // This test performs the following steps:
2269+ // 1. Simulates an ABORTED exception during ExecuteSQL and verifies that the transaction ID is
2270+ // included in the AbortedException.
2271+ // 2. Passes the ABORTED exception to the begin(AbortedException) method of a new
2272+ // TransactionManager, and verifies that the transaction ID from the failed transaction is sent
2273+ // during the inline begin of the first request.
22592274 DatabaseClientImpl client =
22602275 (DatabaseClientImpl ) spanner .getDatabaseClient (DatabaseId .of ("p" , "i" , "d" ));
22612276
@@ -2271,6 +2286,7 @@ public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_Du
22712286 }
22722287 }
22732288
2289+ // Simulate an ABORTED in next ExecuteSQL request.
22742290 mockSpanner .setExecuteStreamingSqlExecutionTime (
22752291 SimulatedExecutionTime .ofException (
22762292 mockSpanner .createAbortedException (ByteString .copyFromUtf8 ("test" ))));
@@ -2290,12 +2306,12 @@ public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_Du
22902306 exception = e ;
22912307 }
22922308 }
2309+ // Verify that the transactionID of the aborted transaction is set.
22932310 assertNotNull (abortedTransactionID );
22942311 assertNotNull (exception );
22952312 mockSpanner .clearRequests ();
22962313
2297- // Use AbortedException while creating a new instance of TransactionManager
2298-
2314+ // Pass AbortedException while invoking begin on the new manager instance.
22992315 try (TransactionManager manager = client .transactionManager ()) {
23002316 TransactionContext transaction = manager .begin (exception );
23012317 while (true ) {
@@ -2315,6 +2331,8 @@ public void testReadWriteTransactionUsingTransactionManager_SetsTransactionID_Du
23152331 }
23162332 }
23172333
2334+ // Verify that the ExecuteSqlRequest with inline begin includes the transaction ID from the
2335+ // previously aborted transaction.
23182336 List <ExecuteSqlRequest > executeSqlRequests =
23192337 mockSpanner .getRequestsOfType (ExecuteSqlRequest .class );
23202338 assertEquals (1 , executeSqlRequests .size ());
0 commit comments