[ 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

        

Reply via email to