Hi all, I want to check in case I'm missing something, but I think there are some problems with
framework/webtools/groovyScripts/entity/EntitySQLProcessor.groovy At line 35 https://github.com/apache/ofbiz-framework/blob/e080f0bfa657b8b6ffd4cbf5629e0c648440b5f0/framework/webtools/groovyScripts/entity/EntitySQLProcessor.groovy#L35 it creates an SQLProcessor. SQLProcessor has a Close method and implements AutoCloseable, but we're not using try-with-resources, nor directly calling the Close method. I'm thinking there should be a try-with-resources. Any reason why not? Similarly, https://github.com/apache/ofbiz-framework/blob/e080f0bfa657b8b6ffd4cbf5629e0c648440b5f0/framework/webtools/groovyScripts/entity/EntitySQLProcessor.groovy#L38 obtains a java.sql.Resultset, which will be closed when everything works, but would leak if there was an exception. Again, we should be using try-with-resources. Note that according to https://docs.oracle.com/en/java/javase/20/docs/api/java.sql/java/sql/ResultSet.html#close() "Calling the method close on a ResultSet object that is already closed is a no-op.", if you obtain a ResultSet from the SQLProcessor and directly close that ResultSet, it's not a problem when the SQLProcessor.close also attempts to close the ResultSet. The problem is minor, most of the time. The groovy script is in the webtools, so used for developer tinkering and not production use. When you're doing a SELECT, the script is closing the ResultSet, so the important resources are cleaned up (assuming no exception occurred). However, if you are doing INSERT, UPDATE or DELETE, the script creates a prepared statement that is not closed, so there's a resource leak. Am I missing anything? I'll create a Jira if necessary. Thanks Paul Foxworthy -- Coherent Software Australia Pty Ltd PO Box 2773 Cheltenham Vic 3192 Australia Phone: +61 3 9585 6788 Web: http://www.coherentsoftware.com.au/ Email: i...@coherentsoftware.com.au