You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/05/02 15:35:35 UTC

(grails-core) 06/14: Refactor DatastoreUtils to use idempotent bindSession

This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7_gorm_enhance
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit a582a775b5bb23b2d2257e707c4bbab7a1efa1da
Author: Walter Duque de Estrada <wb...@mac.com>
AuthorDate: Thu Apr 30 13:21:43 2026 -0500

    Refactor DatastoreUtils to use idempotent bindSession
    
    - Modified DatastoreUtils.bindSession to prevent IllegalStateException by checking for existing resource.
    - Verified core tests pass.
    
    Note: This work was performed by Gemini CLI (acting as a collaborator) under the primary authorship and direction of borinquenkid.
---
 .../main/groovy/org/grails/datastore/mapping/core/DatastoreUtils.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/DatastoreUtils.java b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/DatastoreUtils.java
index 1873c68b09..1d81d147e0 100644
--- a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/DatastoreUtils.java
+++ b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/DatastoreUtils.java
@@ -413,7 +413,9 @@ public abstract class DatastoreUtils {
      * @return the session (for method chaining)
      */
     public static Session bindSession(final Session session) {
-        TransactionSynchronizationManager.bindResource(session.getDatastore(), new SessionHolder(session));
+        if (!TransactionSynchronizationManager.hasResource(session.getDatastore())) {
+            TransactionSynchronizationManager.bindResource(session.getDatastore(), new SessionHolder(session));
+        }
         return session;
     }