[
https://issues.apache.org/jira/browse/DERBY-4733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12885699#action_12885699
]
David Van Couvering commented on DERBY-4733:
--------------------------------------------
Looking at this more closely, it appears that the error happens if the process
exits while the database is booting for the first time (which means the
database directory is being built up). Not sure how you could handle this
correctly. Once the database is booted, then I can run multiple times and not
have a problem.
> Get error "Failed to create database - directory already exists" when
> shutting down a process that is creating a table
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-4733
> URL: https://issues.apache.org/jira/browse/DERBY-4733
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.6.1.0
> Environment: Windows XP
> Reporter: David Van Couvering
> Attachments: corruptme.zip, CorruptMePlease.java
>
>
> If you exit a process that is in the middle of booting a database or creating
> a table, then when you try to access the same database again, you get the
> error "Failed to create database 'foo', see next exception" followed by
> "Directory xxx already exists".
> A stack trace is below. I am attaching a simple program that reproduces.
> Just try running it multiple times. I hit this after the second try.
> Opening database
> java.sql.SQLException: Failed to create database 'corruptme', see the next
> exception for details.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
> at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
> at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
> at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
> at java.sql.DriverManager.getConnection(Unknown Source)
> at java.sql.DriverManager.getConnection(Unknown Source)
> at CorruptMePlease$CreateTableTask.run(CorruptMePlease.java:34)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.sql.SQLException: Failed to create database 'corruptme', see
> the next exception for details.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
> Source)
> ... 14 more
> Caused by: java.sql.SQLException: Directory
> C:\vontu\depot\sandbox_incremental\DerbyCorruption\corruptme already exists.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
> Source)
> ... 11 more
> Caused by: ERROR XBM0J: Directory
> C:\vontu\depot\sandbox_incremental\DerbyCorruption\corruptme already exists.
> at org.apache.derby.iapi.error.StandardException.newException(Unknown
> Source)
> at
> org.apache.derby.impl.services.monitor.StorageFactoryService$9.run(Unknown
> Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.apache.derby.impl.services.monitor.StorageFactoryService.createServiceRoot(Unknown
> Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(Unknown
> Source)
> at
> org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Unknown
> Source)
> ... 11 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.