db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew McIntyre (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-1537) Boot-time exception when running Derby tests with derbytools.jar in front of derby.jar in the classpath.
Date Tue, 25 Jul 2006 00:41:14 GMT
    [ http://issues.apache.org/jira/browse/DERBY-1537?page=comments#action_12423212 ] 
            
Andrew McIntyre commented on DERBY-1537:
----------------------------------------

This problem only occurs when running with the security manager enabled. The underlying problem
is that there is a copy of org/apache/derby/impl/jdbc metadata.properties in derbytools.jar.
When running with the security manager enabled, with the test policy file, the engine requests
metadata.properties and the first copy it finds is in derbytools.jar. However, derby.jar does
not have the necessary FilePermission to read files in derbytools.jar, so getResourceAsStream()
returns null for the file. The NPE is then thrown because of the next line of code when it
calls Properties.load() with a null reference.

It's not technically a regression, since derbytools.jar has apparently included a copy of
metadata.properties since the beginning. We just had never spotted it because the tests were
not running with the security manager. And up until last week, no one had tried putting tools.jar
first.

That said, the fact that there's a copy of metadata.properties in derbytools.jar is certainly
a bug, and one that I'll fix. Preliminary investigation indicates the problem is with the
classlister utility which generates the dependency list for the jar.

> 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
>            Priority: Critical
>             Fix For: 10.2.0.0
>
>
> 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

        

Mime
View raw message