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
>

Reply via email to