The following comment has been added to this issue:
Author: Suresh Thalamati
Created: Tue, 28 Sep 2004 10:41 AM
Body:
There is a work around for this problem without applying any PATCH.
This problem occurs when "write sync" mechanisms (rws mode) is used to write
log. Current system has a flag to disable write sync and use file sync to make
sure logs are written to disk on commit.
Write sync mode can be disabled by setting
"derby.storage.fileSyncTransactionLog=true" in derby.properties. When this
property is set to true logging system does file syncs on commits similar
to what happens on jvms before jdk142.
My two cents on the patch:
As Jan mentioned before , I also don't believe "rwd" mode is doing sync writes
on MAC OS. If syncs does not occur, users can have unrecoverable databases or
lost data. Until Apple fixes "rws/rwd" bug.It would be safer for users to use
derby.storage.fileSyncTransactionLog or have another PATCH that will identify
MAC OS and make logging system use file sync until JVM bug is fixed.
Although using "rwd" may provide better performance on some OS. I don't think
it is safe to fix this problem.
Having OS specific checks is not a clean solution, but I can not think of any
other alternative way to fix this problem. Any ideas ?
---------------------------------------------------------------------
View this comment:
http://issues.apache.org/jira/browse/DERBY-1?page=comments#action_53470
---------------------------------------------------------------------
View the issue:
http://issues.apache.org/jira/browse/DERBY-1
Here is an overview of the issue:
---------------------------------------------------------------------
Key: DERBY-1
Summary: Can't create a new db on OS X
Type: Bug
Status: Unassigned
Priority: Major
Project: Derby
Versions:
10.0.2.0
Assignee:
Reporter: Tom Santos
Created: Fri, 24 Sep 2004 2:22 PM
Updated: Tue, 28 Sep 2004 10:41 AM
Environment: OS X 10.3.5, Java 1.4.2_05, Dual G5
Description:
This problem does not occur when I use the same jars on Linux.
I am unable to create a new database in ij by using the following command:
connect 'jdbc:derby:testdb;create=true';
I get the following output:
ERROR XJ041: Failed to create database 'testdb', see the next exception for
details.
ERROR XBM01: Startup failed due to an exception, see next exception for details.
ERROR XJ001: Java exception:
'/Users/tom/dev/java/derby-bin/lib/testdb/log/log1.dat (File exists):
java.io.FileNotFoundException'.
All users have write permissions to the directory so it's not getting blocked
there. I'm not sure what's going on. I've included the contents of derby.log
below. I've also included the result of running sysinfo on my machine below
that.
----------------------------------------------------------------
2004-09-24 20:33:53.762 GMT:
Booting Derby version IBM Corp. - Apache Derby - 10.0.2.0 - (30301): instance
c013800d-00ff-3226-5601-00000015bd70
on database directory /Users/tom/dev/java/derby-bin/lib/testdb
2004-09-24 20:33:53.821 GMT:
Shutting down instance c013800d-00ff-3226-5601-00000015bd70
----------------------------------------------------------------
2004-09-24 20:33:53.837 GMT Thread[main,5,main] Cleanup action starting
ERROR XBM01: Startup failed due to an exception, see next exception for details.
at
org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
at
org.apache.derby.iapi.services.monitor.Monitor.exceptionStartingModule(Monitor.java)
at org.apache.derby.impl.store.raw.log.LogToFile.boot(LogToFile.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.bootLogFactory(BaseDataFileFactory.java)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.setRawStoreFactory(BaseDataFileFactory.java)
at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java)
at
org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java)
at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java)
at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java)
at
org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java)
at
org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java)
at
org.apache.derby.impl.jdbc.EmbedConnection20.<init>(EmbedConnection20.java)
at
org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java)
at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java)
at org.apache.derby.jdbc.Driver169.connect(Driver169.java)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java)
at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java)
at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java)
at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java)
at org.apache.derby.impl.tools.ij.Main.go(Main.java)
at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java)
at org.apache.derby.impl.tools.ij.Main14.main(Main14.java)
at org.apache.derby.tools.ij.main(ij.java)
============= begin nested exception, level (1) ===========
java.io.FileNotFoundException: /Users/tom/dev/java/derby-bin/lib/log/log1.dat
(File exists)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:204)
at
org.apache.derby.impl.io.DirRandomAccessFile.<init>(DirRandomAccessFile.java)
at
org.apache.derby.impl.io.DirRandomAccessFile4.<init>(DirRandomAccessFile4.java)
at org.apache.derby.impl.io.DirFile4.getRandomAccessFile(DirFile4.java)
at org.apache.derby.impl.store.raw.log.LogToFile.run(LogToFile.java)
at java.security.AccessController.doPrivileged(Native Method)
at
org.apache.derby.impl.store.raw.log.LogToFile.privRandomAccessFile(LogToFile.java)
at org.apache.derby.impl.store.raw.log.LogToFile.boot(LogToFile.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.bootLogFactory(BaseDataFileFactory.java)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.setRawStoreFactory(BaseDataFileFactory.java)
at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java)
at
org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java)
at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java)
at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java)
at
org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java)
at
org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java)
at
org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java)
at
org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java)
at
org.apache.derby.impl.jdbc.EmbedConnection20.<init>(EmbedConnection20.java)
at
org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java)
at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java)
at org.apache.derby.jdbc.Driver169.connect(Driver169.java)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java)
at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java)
at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java)
at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java)
at org.apache.derby.impl.tools.ij.Main.go(Main.java)
at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java)
at org.apache.derby.impl.tools.ij.Main14.main(Main14.java)
at org.apache.derby.tools.ij.main(ij.java)
============= end nested exception, level (1) ===========
Cleanup action completed
------------------ Java Information ------------------
Java Version: 1.4.2_05
Java Vendor: Apple Computer, Inc.
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home
Java classpath:
/Users/tom/dev/java/derby-bin/lib/derby.jar:/Users/tom/dev/java/derby-bin/lib/derbytools.jar:/Users/tom/dev/java/derby-bin/lib/derbynet.jar:/Users/tom/dev/java/derby-bin/lib/db2jcc.jar:/Users/tom/dev/java/derby-bin/lib/db2jcc_license_c.jar
OS name: Mac OS X
OS architecture: ppc
OS version: 10.3.5
Java user name: tom
Java user home: /Users/tom
Java user dir: /Users/tom/dev/java/derby-bin/lib
--------- Derby Information --------
[/Users/tom/dev/java/derby-bin/lib/derby.jar] 10.0.2.0 - (46005)
[/Users/tom/dev/java/derby-bin/lib/derbytools.jar] 10.0.2.0 - (46005)
[/Users/tom/dev/java/derby-bin/lib/derbynet.jar] 10.0.2.0 - (46005)
[/Users/tom/dev/java/derby-bin/lib/db2jcc.jar] 2.4 - (17)
[/Users/tom/dev/java/derby-bin/lib/db2jcc_license_c.jar] 2.4 - (17)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira