From 10925f2447af590f66cbbcc3f7e9cfedfda42af3 Mon Sep 17 00:00:00 2001 From: Weimin Yu Date: Fri, 3 Jan 2025 15:52:25 -0500 Subject: [PATCH] Enable nested transaction warning in production (#2628) Knonw nested transact calls found in sandbox have been refactored away. Enable logging in production to catch any missing cases. Logging is throttled at 1 message per minute per VM. --- .../persistence/transaction/JpaTransactionManagerImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/google/registry/persistence/transaction/JpaTransactionManagerImpl.java b/core/src/main/java/google/registry/persistence/transaction/JpaTransactionManagerImpl.java index 041d06a8f..16240ba1d 100644 --- a/core/src/main/java/google/registry/persistence/transaction/JpaTransactionManagerImpl.java +++ b/core/src/main/java/google/registry/persistence/transaction/JpaTransactionManagerImpl.java @@ -71,6 +71,7 @@ import java.util.NoSuchElementException; import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Supplier; import java.util.stream.Stream; @@ -177,9 +178,9 @@ public class JpaTransactionManagerImpl implements JpaTransactionManager { if (!getHibernateAllowNestedTransactions()) { throw new IllegalStateException(NESTED_TRANSACTION_MESSAGE); } - if (RegistryEnvironment.get() != RegistryEnvironment.PRODUCTION - && RegistryEnvironment.get() != RegistryEnvironment.UNITTEST) { - logger.atWarning().withStackTrace(StackSize.MEDIUM).log(NESTED_TRANSACTION_MESSAGE); + if (RegistryEnvironment.get() != RegistryEnvironment.UNITTEST) { + logger.atWarning().withStackTrace(StackSize.MEDIUM).atMostEvery(1, TimeUnit.MINUTES).log( + NESTED_TRANSACTION_MESSAGE); } // This prevents inner transaction from retrying, thus avoiding a cascade retry effect. return transactNoRetry(isolationLevel, work);