Hi, I'm sorry for the delay... I will have a look in one week (I'm on vacation for one week).
Regards, Thomas On Tue, Jun 30, 2009 at 7:25 AM, Eric Faulhaber<[email protected]> wrote: > Hello Thomas, > > During testing of a project which uses H2 v1.1.113 in embedded, > multi-threaded mode for temporary table support, we hit a > ConcurrentModificationException in DiskFile.java. A colleague found that > unsynchronized access to the potentiallyFreePages set in that class was the > cause. > > I have attached his test case which illustrates the problem (at least on my > dual core Ubuntu box using the Sun Linux JVM v1.6.0_05). The attached zip > file also contains a patch which resolves the issue (note the patch is made > against h2_head revision 1583 for convenience, but I have only tested the > fix with v1.1.113). > > The fix synchronizes access to the potentiallyFreePages object using the > object itself as the monitor, even though the reference to that object may > be reset with a new HashSet instance in DiskFile.reset(). I did this to > avoid adding another instance variable to the class as a lock object, > because it seems like reset() is only called at well known times, such that > I presume this to be a safe approach. If this presumption is incorrect (I > could not determine this definitively by reviewing the code), it would be > better to synchronize on a separate lock object. > > Please consider including this fix into the project. > > Best regards, > Eric Faulhaber > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/h2-database?hl=en -~----------~----~----~----~------~----~------~--~---
