You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2013/05/29 14:37:21 UTC

[jira] [Updated] (DERBY-6224) Many test failures on latest JDK 8 EA build because of missing SQLPermission

     [ https://issues.apache.org/jira/browse/DERBY-6224?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen updated DERBY-6224:
--------------------------------------

    Attachment: derby-6224-01-a.diff

The attached patch, derby-6224-01-a.diff, wraps a doPrivileged block around the calls to DriverManager.deregisterDriver() in AutoloadedDriver and grants SQLPermission("deregisterDriver") to derby.jar and the classes directory in derby_tests.policy and ServerPropertiesTest.policy. This was sufficient to make the tests run cleanly on JDK 8 EA b91, with the exception of one unrelated failure logged as DERBY-6233.

The patch does not add the required permission to the default policy installed by the network server when it's started from the command line. This means the network server will still print an AccessControlException when it's shutting down, but that doesn't seem to cause any problems for the tests. It needs to be fixed, though.
                
> Many test failures on latest JDK 8 EA build because of missing SQLPermission
> ----------------------------------------------------------------------------
>
>                 Key: DERBY-6224
>                 URL: https://issues.apache.org/jira/browse/DERBY-6224
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.11.0.0
>         Environment: java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b89)
> Java HotSpot(TM) 64-Bit Server VM (build 25.0-b31, mixed mode)
>            Reporter: Knut Anders Hatlen
>         Attachments: derby-6224-01-a.diff
>
>
> With the latest EA build of JDK 8 (build 1.8.0-ea-b89), I see many failures in suites.All. For example:
> 1) testStartNetworkServerFalse(org.apache.derbyTesting.functionTests.tests.derbynet.DerbyNetAutoStartTest)java.security.AccessControlException: access denied ("java.sql.SQLPermission" "deregisterDriver")
> 	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:364)
> 	at java.security.AccessController.checkPermission(AccessController.java:562)
> 	at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
> 	at java.sql.DriverManager.deregisterDriver(DriverManager.java:399)
> 	at org.apache.derby.jdbc.AutoloadedDriver.unregisterDriverModule(AutoloadedDriver.java:263)
> 	at org.apache.derby.jdbc.Driver20.stop(Driver20.java:105)
> 	at org.apache.derby.impl.services.monitor.TopService.stop(TopService.java:443)
> 	at org.apache.derby.impl.services.monitor.TopService.shutdown(TopService.java:394)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(BaseMonitor.java:227)
> 	at org.apache.derby.impl.services.monitor.FileMonitor.shutdown(FileMonitor.java:44)
> 	at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(BaseMonitor.java:197)
> 	at org.apache.derby.impl.services.monitor.FileMonitor.shutdown(FileMonitor.java:44)
> 	at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:255)
> 	at org.apache.derby.jdbc.Driver20.connect(Driver20.java:246)
> 	at org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:145)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:661)
> 	at java.sql.DriverManager.getConnection(DriverManager.java:208)
> 	at org.apache.derbyTesting.junit.DriverManagerConnector.getConnectionByAttributes(DriverManagerConnector.java:204)
> 	at org.apache.derbyTesting.junit.DriverManagerConnector.shutEngine(DriverManagerConnector.java:171)
> 	at org.apache.derbyTesting.junit.TestConfiguration.shutdownEngine(TestConfiguration.java:1822)
> 	at org.apache.derbyTesting.functionTests.tests.derbynet.DerbyNetAutoStartTest.setUp(DerbyNetAutoStartTest.java:82)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:117)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:439)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:456)
> What's new in EA build 89 is that DriverManager.deregisterDriver() now requires an SQLPermission when running under a security manager. Most of suites.All runs under a security manager, and Derby's engine shutdown code calls deregisterDriver(), so this problem probably affects all tests that shut down the engine.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira