You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by st...@apache.org on 2021/04/18 21:10:36 UTC

[openjpa] branch master updated: OPENJPA-2789 close connection after bulk delete

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

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git


The following commit(s) were added to refs/heads/master by this push:
     new eb2dbec  OPENJPA-2789 close connection after bulk delete
eb2dbec is described below

commit eb2dbec1273e52d4258ed2b183106ca8d098ed94
Author: Mark Struberg <st...@apache.org>
AuthorDate: Sun Apr 18 23:05:50 2021 +0200

    OPENJPA-2789 close connection after bulk delete
    
    while ResultSetResult closes the underlying connection we did loose this handling in
    JDBCStoreQuery when XROP sharding got added.
---
 .../apache/openjpa/jdbc/kernel/JDBCStoreQuery.java |  3 +-
 .../openjpa/persistence/kernel/TestBulkDelete.java | 50 ++++++++++++++++++++++
 2 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
index 9bec429..ce69d36 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
@@ -603,8 +603,7 @@ public class JDBCStoreQuery
             }
         } finally {
             try {
-            	if (conn.getAutoCommit())
-            		conn.close();
+                conn.close();
             } catch (SQLException se) {
 
             }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestBulkDelete.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestBulkDelete.java
new file mode 100644
index 0000000..9d45863
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestBulkDelete.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.persistence.kernel;
+
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+
+import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
+import org.apache.openjpa.persistence.kernel.common.apps.CalendarFields;
+import org.apache.openjpa.persistence.kernel.common.apps.RuntimeTest1;
+
+/**
+ * OPENJPA-2789 connection didn't get closed properly
+ */
+public class TestBulkDelete extends AbstractTestCase {
+
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp(CalendarFields.class);
+    }
+
+    public void testConnectionClosing() throws Exception {
+        for (int i = 0; i < 30; i++) {
+            EntityManager em = getEmf().createEntityManager();
+            em.getTransaction().begin();
+            final TypedQuery<CalendarFields> qry
+                        = em.createQuery("delete from CalendarFields e where e.id = :val", CalendarFields.class);
+            qry.setParameter("val", 12345);
+            qry.executeUpdate();
+
+            em.getTransaction().commit();
+            em.close();
+        }
+    }
+}