I have committed this change to the trunk. I reviewed the change, and ran full set of tests on windows 2000. Have not explicitly checked on apple myself, waiting for feedback there - this fix has been tested by multiple apple users in the past and did fix the problem. The fix does not change the behavior on systems where file sync does not exhibit the problems described in the JIRA entry.
Change: 306963 Suresh Thalamati (JIRA) wrote: > [ > http://issues.apache.org/jira/browse/DERBY-1?page=comments#action_12331234 ] > > Suresh Thalamati commented on DERBY-1: > -------------------------------------- > > I was hoping this issue will go away , but it seems to have appeared again > in jdk1.5. Although there is a workaround by > setting derby.storage.fileSyncTransactionLog=true. I think for users who > are just tryingout Derby , hitting this problem is very annoying. > Resubmmitting the workaround patch(derby1.diff) for this problem againest > main trunk. This patch solves the problem by > Catching the FileNotFoundException then set log write mode to file Sync > and then open the log files in plain "rw" mode. > > Although it is a vendor spefic fix , I think it will really help users > tryingout derby on Mac. It would be great if some one can review the > patch and reconsider it for committing into 10.1 and main, if there are no > objections from the community. > > All tests passed on WIndow Xp. > > My vote +1 . > > > > > >>Can't create a new db on OS X >>----------------------------- >> >> Key: DERBY-1 >> URL: http://issues.apache.org/jira/browse/DERBY-1 >> Project: Derby >> Type: Bug >> Components: Store >> Versions: 10.0.2.0 >> Environment: OS X 10.3.5, Java 1.4.2_05, Dual G5 >> Reporter: Tom Santos >> Assignee: Suresh Thalamati >> Attachments: derby1.diff >> >>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 ----------------- >>------------------------------------------------------ > >