[ http://issues.apache.org/jira/browse/DERBY-1537?page=all ]
Andrew McIntyre updated DERBY-1537:
-----------------------------------
Attachment: derby-1537-v1.diff
Attching a patch for this issue. Currently, for every class scanned by
classlister, the package of that class is also checked for a few certain
properties files. If found, these properties files are added to the list of
files tracked by the dependency manager. Currently, this is only used by the
engine build for metadata.properties. I've turned it off for the tools jar
build by wrapping it in a if (!db2jtools) {} block. This prevents classlister
from including org.apache.derby.impl.jdbc.metadata.properties because it
scanned and added org.apache.derby.impl.jdbc.EmbedSQLException, a dependent of
org.apache.derby.iapi.error.StandardException.
Classlister could use some cleanup, but that should be handled separately from
this issue.
I've verified that the fix solves the underlying problem and the exposed issue,
the classpath ordering problem. Unless there are any comments, I will commit
this in the next day or so.
> Boot-time exception when running Derby tests with derbytools.jar in front of
> derby.jar in the classpath.
> --------------------------------------------------------------------------------------------------------
>
> Key: DERBY-1537
> URL: http://issues.apache.org/jira/browse/DERBY-1537
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.2.0.0
> Reporter: A B
> Assigned To: Andrew McIntyre
> Priority: Critical
> Fix For: 10.2.0.0
>
> Attachments: derby-1537-v1.diff
>
>
> When running derbyall against sane jars all tests that create the "wombat"
> database fail at boot-time if the classpath has derbytools.jar before
> derby.jar. The failure occurs when the test tries to create the database. I
> can successfully create a database manually, but for whatever reason the test
> harness is unable to do so.
> I've set the component to "Test" but I don't know if this a test harness
> problem or something more severe.
> The full stack trace is below. If I switch the order of derby.jar and
> derbytools.jar, everything works as expected.
> ERROR XBM01: Startup failed due to an exception. See next exception for
> details.
> at
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:297)
> at
> org.apache.derby.iapi.services.monitor.Monitor.exceptionStartingModule(Monitor.java:668)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1849)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1013)
> at
> org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:587)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:1563)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:243)
> at
> org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:72)
> at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java:73)
> at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:209)
> at
> org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:116)
> at java.sql.DriverManager.getConnection(DriverManager.java:539)
> at java.sql.DriverManager.getConnection(DriverManager.java:158)
> at org.apache.derby.impl.tools.ij.util.startJBMS(util.java:491)
> at org.apache.derby.impl.tools.ij.util.startJBMS(util.java:571)
> at
> org.apache.derby.impl.tools.ij.ConnectionEnv.init(ConnectionEnv.java:62)
> at org.apache.derby.impl.tools.ij.utilMain.<init>(utilMain.java:149)
> at org.apache.derby.impl.tools.ij.utilMain14.<init>(utilMain14.java:51)
> at org.apache.derby.impl.tools.ij.Main14.getutilMain(Main14.java:102)
> at org.apache.derby.impl.tools.ij.Main.<init>(Main.java:232)
> at org.apache.derby.impl.tools.ij.Main14.<init>(Main14.java:68)
> at org.apache.derby.impl.tools.ij.Main14.getMain(Main14.java:91)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:170)
> at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
> at org.apache.derby.tools.ij.main(ij.java:60)
> ============= begin nested exception, level (1) ===========
> java.lang.NullPointerException
> at java.io.Reader.<init>(Reader.java(Inlined Compiled Code))
> at java.io.InputStreamReader.<init>(InputStreamReader.java(Inlined
> Compiled Code))
> at java.util.Properties.load(Properties.java(Compiled Code))
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.run(DataDictionaryImpl.java:9757)
> at java.security.AccessController.doPrivileged1(Native Method)
> at java.security.AccessController.doPrivileged(AccessController.java:287)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getQueryDescriptions(DataDictionaryImpl.java:9747)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSPSSet(DataDictionaryImpl.java:8275)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSystemSps(DataDictionaryImpl.java:8262)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(DataDictionaryImpl.java:651)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> at
> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> at
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionFactory.bootDataDictionary(GenericLanguageConnectionFactory.java:357)
> at
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionFactory.boot(GenericLanguageConnectionFactory.java:330)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:542)
> at
> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:418)
> at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:193)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1996)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:290)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1831)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1013)
> at
> org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:587)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:1563)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:243)
> at
> org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:72)
> at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java:73)
> at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:209)
> at
> org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:116)
> at java.sql.DriverManager.getConnection(DriverManager.java:539)
> at java.sql.DriverManager.getConnection(DriverManager.java:158)
> at org.apache.derby.impl.tools.ij.util.startJBMS(util.java:491)
> at org.apache.derby.impl.tools.ij.util.startJBMS(util.java:571)
> at
> org.apache.derby.impl.tools.ij.ConnectionEnv.init(ConnectionEnv.java:62)
> at org.apache.derby.impl.tools.ij.utilMain.<init>(utilMain.java:149)
> at org.apache.derby.impl.tools.ij.utilMain14.<init>(utilMain14.java:51)
> at org.apache.derby.impl.tools.ij.Main14.getutilMain(Main14.java:102)
> at org.apache.derby.impl.tools.ij.Main.<init>(Main.java:232)
> at org.apache.derby.impl.tools.ij.Main14.<init>(Main14.java:68)
> at org.apache.derby.impl.tools.ij.Main14.getMain(Main14.java:91)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:170)
> at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
> at org.apache.derby.tools.ij.main(ij.java:60)
> ============= end nested exception, level (1) ===========
> Cleanup action completed
--
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
-
For more information on JIRA, see: http://www.atlassian.com/software/jira