[
https://issues.apache.org/jira/browse/GORA-84?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ferdy Galema updated GORA-84:
-----------------------------
Attachment: GORA-84.patch
This patch is really just a workaround: It disables the closing of statements.
This store needs a rewrite from somebody that is more into sql than I am. But
for now it makes sure that SqlStore is able to handle multithreaded clients.
Will commit this when there are no objections.
> 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
> Attachments: GORA-84.patch
>
>
> 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