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:31:09 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
If string.intern()sync does not work then following comment does not matter.

It looks like code does synchronized(DERBY_JVM_ID) but I think it wants 
to do synchronized on intern of that string.

> 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.
> 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