[geotk] [JIRA] Created: (GEOTK-113) Race conditions in coverage-sql
Database
Martin Desruisseaux (JIRA)
jira at geomatys.com
Sat Aug 7 17:02:35 EDT 2010
Race conditions in coverage-sql Database
----------------------------------------
Key: GEOTK-113
URL: http://jira.geotoolkit.org/browse/GEOTK-113
Project: Geotoolkit
Issue Type: Bug
Components: Coverage
Affects Versions: 3.14
Reporter: Martin Desruisseaux
Assignee: Martin Desruisseaux
Priority: Minor
When invoking {{synchronized(getLock())}} in a {{Table}} class, it is possible that the {{Database.Session.monitorExit(...)}} method is invoked in a background thread during the slight time window between the return of {{Table.getLock()}} and the synchronized statement, resulting in the {{Database.Session}} be declared as available for an other thread (its {{threadID}} field is set to null), or disposed.
Consequently, there is a possibility that the same {{Database.Session}} instance is used by two different threads. The program will nevertheless have correct computational behavior thanks to the {{synchronized}} statements, but we would have more thread contention.
A fix could be to replace the usage of {{synchronized}} statements by {{java.util.concurrent.Lock}}, which would allow us to acquire the lock right in the {{Database.getLocalCache()}} method.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.geotoolkit.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the Geotoolkit
mailing list