[
https://issues.apache.org/jira/browse/GORA-84?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13206406#comment-13206406
]
Lewis John McGibbney commented on GORA-84:
------------------------------------------
Hi Ferdy. Just got feedback from Lukas @ JOOQ.
He's stated
{bq}
I doubt that jOOQ (or any other persistence layer) could fix this
issue for you. It seems as though there is a problem related to JDBC
connection pooling / handling, etc. jOOQ expects you to provide it
with a correctly initialised connection. If the connection you provide
jOOQ with is closed, jOOQ cannot operate on it either.
In other words, GORA-84 would probably still appear with jOOQ, too.
{bq}
This being said, at least we know that the best way around this is to provide
JOOQ with a properly synchronized configuration (duh). This means making the
relevant changes to either SqlUtils or SqlStore, ensuring that this edge case
is included in out CI tests, then progressing with GORA-86 before we can say
that the gora-sql stuff is license compliant and in a better state of play than
it is now.
Back to work :0)
> SqlStore not thread-safe because of Closed Statements
> -----------------------------------------------------
>
> Key: GORA-84
> URL: https://issues.apache.org/jira/browse/GORA-84
> Project: Apache Gora
> Issue Type: Bug
> Components: storage-sql
> Reporter: Ferdy Galema
>
> In some multithreaded test code (actually Nutchgora TestGoraStorage) the
> current trunk of Gora SqlStore fails because of Closed Statements:
> Caused by: java.sql.SQLException: statement is closed
> at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
> at org.hsqldb.jdbc.JDBCPreparedStatement.executeBatch(Unknown Source)
> at org.apache.gora.sql.store.SqlStore.flush(SqlStore.java:329)
> ... 9 more
> Caused by: org.hsqldb.HsqlException: statement is closed
> at org.hsqldb.error.Error.error(Unknown Source)
> at org.hsqldb.error.Error.error(Unknown Source)
> at org.hsqldb.Session.executeCompiledBatchStatement(Unknown Source)
> at org.hsqldb.Session.execute(Unknown Source)
> ... 11 more
> I am not sure why this problem suddenly arises as I could not find relevant
> changes in the SqlStore related code.
> The problem is caused of incorrectly synchronized code when buffering and
> flushing put requests. Some statements are accidently shared between threads
> because of the shared write buffer (the HashSet writeCache). So it may happen
> that some closed statements are trying to be executed, raising the above
> exception. When I disabled SqlUtils.close() by making the method empty, the
> tests worked again. So that is the lazy man's solution: Disable the
> writeCache.
> I suggest that somebody who is more into maintaining this store fixes it user
> a better solution (proper synchronization). When there is no interest in
> doing so, I can still always implement the lazy man's solution :)
> By the way, the fact that this error was not detected in Gora's own tests
> suggests that we might want to expand it's coverage. This is in line what was
> already mentioned a few days ago on the dev list ("inconsistencies in
> TestXXXStore").
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira