From 8e3846991d30a9a577dae9664996c036895f04cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Fri, 27 Sep 2024 17:45:02 +0200 Subject: [PATCH] Reuse NoTransactionInContextException instances New NoTransactionInContextException instances are created frequently in TransactionContextManager#currentContext() when there is no transaction, we could reuse the same instance instead to reduce the GC pressure. Closes gh-33601 --- .../transaction/reactive/TransactionContextManager.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java b/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java index cac1f04133c7..900fba8cd85d 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java @@ -37,6 +37,9 @@ */ public abstract class TransactionContextManager { + private static final NoTransactionInContextException NO_TRANSACTION_IN_CONTEXT_EXCEPTION = + new NoTransactionInContextException(); + private TransactionContextManager() { } @@ -60,7 +63,7 @@ public static Mono currentContext() { return Mono.just(holder.currentContext()); } } - return Mono.error(new NoTransactionInContextException()); + return Mono.error(NO_TRANSACTION_IN_CONTEXT_EXCEPTION); }); }