You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (JIRA)" <ji...@apache.org> on 2016/01/04 08:05:39 UTC
[jira] [Reopened] (GROOVY-7673) Remove synchronized methods of
groovy.sql.Sql and document it as not thread-safe
[ https://issues.apache.org/jira/browse/GROOVY-7673?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King reopened GROOVY-7673:
-------------------------------
I'll reopen until we revert in 2.4.x
> Remove synchronized methods of groovy.sql.Sql and document it as not thread-safe
> --------------------------------------------------------------------------------
>
> Key: GROOVY-7673
> URL: https://issues.apache.org/jira/browse/GROOVY-7673
> Project: Groovy
> Issue Type: Bug
> Components: SQL processing
> Affects Versions: 2.4.5
> Reporter: acefael
> Assignee: Pascal Schumacher
> Labels: breaking
> Fix For: 2.5.0-beta-1
>
>
> I am using groovy.sql.Sql with a commons dbcp2 BasicDataSource and am encountering a stacktrace as in \[2\] below. I do create many identical closures with different data, and I pass them all at once to ExecutorService.invokeAll. The closures are all using the same Sql instance.
> I believe this is a race condition because it happens only when the database is over a network, and not when the database is local.
> To work around I can set Sql.cacheNamedQueries = false. Problem is reliably gone in this case. So I guess the culprit is in \[1\], with my sql already being cached in namedParamSqlCache, but not yet in namedParamIndexPropCache?
> \[1\] the line in the source code
> https://github.com/apache/incubator-groovy/blob/GROOVY_2_4_X/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java#L4407
> \[2\] the stacktrace
> {noformat}
> > java.lang.NullPointerException
> > at java.util.ArrayList.<init>(ArrayList.java:168) ~[?:1.8.0]
> > at groovy.sql.Sql.buildSqlWithIndexedProps(Sql.java:4422) ~[groovy-all-2.4.5.jar:2.4.5]
> > at groovy.sql.Sql.checkForNamedParams(Sql.java:4369) ~[groovy-all-2.4.5.jar:2.4.5]
> > at groovy.sql.Sql.getPreparedStatement(Sql.java:4360) ~[groovy-all-2.4.5.jar:2.4.5]
> > at groovy.sql.Sql.getPreparedStatement(Sql.java:4439) ~[groovy-all-2.4.5.jar:2.4.5]
> > at groovy.sql.Sql.execute(Sql.java:2366) ~[groovy-all-2.4.5.jar:2.4.5]
> > at groovy.sql.Sql.execute(Sql.java:2438) ~[groovy-all-2.4.5.jar:2.4.5]
> > at groovy.sql.Sql$execute$1.call(Unknown Source) ~[?:?]
> > at es.acefael.BaseMigration.execute(BaseMigration.groovy:2017) ~[es-acefael-dostuff-SNAPSHOT.jar:?]
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)