db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Matrigali <mikem_...@sbcglobal.net>
Subject Re: [jira] Updated: (DERBY-700) Derby does not prevent dual boot of database from different classloaders on Linux
Date Wed, 30 May 2007 18:14:14 GMT

Kathey Marsden (JIRA) wrote:
>      [ https://issues.apache.org/jira/browse/DERBY-700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
> Kathey Marsden updated DERBY-700:
> ---------------------------------
>     Attachment: derby-700_with_NPE_fix_diff.txt
> Attached is a patch that fixes the NPE, but there are still issues with the multithreaded
test.  Sometimes with 9 or more threads in startConcurrentDatabaseBoots we get dual boot without
any message to the derby.log.   I think there is one of two issues here:
> 1) There is no synchronization across classloaders, so even though we synchronize on
the databaseName() it is not useful when two threads from different ClassLoaders come into
the synchronized code.
Not sure what you are saying here.  Do you believe the technique of 
synchronizing on the intern of a String does not work across 
classloaders?  If that does not work, I agree that the the change
is not going to work.

> 2) Since getting the exFileLock is not within the synchronized code.  It is possible
that the state of the dbex.lck file on disk changes before the boot.
> I am not sure how to resolve these issues, especially 1.  I'd appreciate any advice on
the issue.
> Thanks
> Kathey
>>Derby does not prevent dual boot of database from different classloaders on Linux
>>                Key: DERBY-700
>>                URL: https://issues.apache.org/jira/browse/DERBY-700
>>            Project: Derby
>>         Issue Type: Bug
>>         Components: Store
>>   Affects Versions:
>>        Environment: ava -version
>>java version "1.4.2_08"
>>Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
>>Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
>>           Reporter: Kathey Marsden
>>           Assignee: Kathey Marsden
>>           Priority: Critical
>>        Attachments: DERBY-700.diff, DERBY-700.stat, derby-700_diff.txt, derby-700_stat.txt,
DERBY-700_v1_use_to_run_DualBootrepro_multithreaded.diff, DERBY-700_v1_use_to_run_DualBootrepro_multithreaded.stat,
derby-700_with_NPE_fix_diff.txt, derby-700_with_NPE_fix_stat.txt, derby.log, derby700_singleproperty_v1.diff,
derby700_singleproperty_v1.stat, DualBootRepro.java, DualBootRepro2.zip, DualBootRepro_mutltithreaded.tar.bz2
>>Derby does not prevent dual boot from two different classloaders on Linux.
>>To reproduce run the  program DualBootRepro with no derby jars in your classpath.
The program assumes derby.jar is in, you can change the location by changing
the DERBY_LIB_DIR variable.
>>On Linux the output is:
>>$java -cp . DualBootRepro
>>Loading derby from file:
>>Booted database in loader java.net.URLClassLoader@8ed465
>>FAIL: Booted database in 2nd loader java.net.URLClassLoader@dc6a77
>>On Windows I get the expected output.
>>$ java -cp . DualBootRepro
>>Loading derby from file:
>>Booted database in loader java.net.URLClassLoader@1ac04e8
>>PASS: Expected exception for dualboot:Another instance of Derby may have already booted
the database D:\marsden\repro\dualboot\mydb.

View raw message