db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6224) Many test failures on latest JDK 8 EA build because of missing SQLPermission
Date Wed, 29 May 2013 21:58:20 GMT

    [ https://issues.apache.org/jira/browse/DERBY-6224?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13669790#comment-13669790
] 

Knut Anders Hatlen commented on DERBY-6224:
-------------------------------------------

Thanks for the feedback, Rick. I will go ahead according to my initial plan, then.

I was hoping the network server shutdown issue could be solved by making NetworkServerControlImpl
add the deregister=false attribute to the system shutdown command, instead of adding the SQLPermission
to the default policy. Deregistering the driver during network server shutdown is not necessary.
The system shutdown logic is there to ensure the databases are shut down cleanly before the
JVM terminates. Whether or not the driver was deregistered is of no interest after the JVM
has terminated.

However, that doesn't help. deregister=false will prevent deregisterDriver() from being called
on AutoloadedDriver40, but the logic is so that deregisteredDriver() will be called on Driver42
instead. If deregister=false is not specified, it's the other way around: deregisterDriver()
is called on AutoloadedDriver40, but not on Driver42. So it looks as if we don't have any
way to prevent deregisterDriver() from being called during system shutdown. I have a feeling
that this behaviour is not intended, but I'll have to go through the comments on DERBY-2905
to see if it was discussed there.
                
> 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

Mime
View raw message