Thanks Deepak. Created Jira at https://issues.apache.org/jira/browse/OFBIZ-12836 .
Cheers Paul On Tue, 11 Jul 2023 at 21:19, Deepak Dixit <dee...@apache.org> wrote: > 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 > > > -- 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