[ 
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

Reply via email to