Hi Paul, The resource should be closed properly, we can use groovy withClosable or groovy 3 try with resource.
No one touched the groovy code for the ARM. Thanks & Regards -- Deepak Dixit ofbiz.apache.org On Tue, Jul 11, 2023 at 11:09 AM Paul Foxworthy <p...@cohsoft.com.au.invalid> wrote: > 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 >