[
https://issues.apache.org/jira/browse/DERBY-700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12504471
]
Daniel John Debrunner commented on DERBY-700:
---------------------------------------------
-1 on this patch (now applied as 547042 & 547046):
The additional method on StorageFile is not well defined.
StorageFile.getExclusiveFileLock() indicates it gets an exclusive lock on the
name represented by StorageFile.
The new method StorageFile.getLockedFile() seems to imply that if a
StorageFile is locked, then there is a new
different file created to perform the lock, thus one can modify the contents
of the two files independently,
using the existing StorageFile.getRandomAccessFile() and now the new
StorageFile.getLockedFile().
(Otherwise why have the new method, one can already get a random access to a
StorageFile??).
This seems problematic for a few reasons:
- seems inefficient, creating a new file to lock another
- seems to change the contract of the existing method
getExclusiveFileLock() (no mention of requiring a separate file)
- possibly hard to implement for an arbitary IO implementation.
Maybe though I'm misunderstanding what is going on, the javadoc comment for
getLockedFile() does seem to have
a couple of typos in it (e.g. "exclusing e lock"). If there's some good
explanation for what is going on and the relationship
between StorageFile.getLockedFile() and StorageFile.getRandomAccessFile() can
be well defined then I can frop my veto.
> 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
> Fix For: 10.3.0.0
>
> Attachments: DERBY-700.diff, DERBY-700.stat,
> derby-700_06_07_07_diff.txt, derby-700_06_07_07_stat.txt, 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,
> releaseNote.html
>
>
> 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 [EMAIL PROTECTED]
> FAIL: Booted database in 2nd loader [EMAIL PROTECTED]
> 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 [EMAIL PROTECTED]
> PASS: Expected exception for dualboot:Another instance of Derby may have
> already booted the database D:\marsden\repro\dualboot\mydb.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.