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: 10.1.2.1
>>        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 10.1.2.1/derby.jar, you can change the location by changing
the DERBY_LIB_DIR variable.
>>On Linux the output is:
>>$java -cp . DualBootRepro
>>Loading derby from file:10.1.2.1/derby.jar
>>10.1.2.1/derby.jar
>>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:10.1.2.1/derby.jar
>>10.1.2.1/derby.jar
>>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.
> 
> 

Mime
View raw message