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

Reply via email to