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 "Richard N. Hillegas (Jira)" <ji...@apache.org> on 2021/08/07 15:22:00 UTC

[jira] [Commented] (DERBY-7122) java.security.AccessControlException when creating a DB remotely: Permission getenv.SOURCE_DATE_EPOCH

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

Richard N. Hillegas commented on DERBY-7122:
--------------------------------------------

This issue was raised in a Derby user email thread titled "Self-study tutorial and permissions". The full exception trace is:

{noformat}
ERROR XBM01: Startup failed due to an exception. See next exception for details.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.iapi.services.monitor.Monitor.exceptionStartingModule(Monitor.java:743)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1857)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    ... 22 more
============= begin nested exception, level (1) ===========
java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
============= end nested exception, level (1) ===========
Cleanup action completed
Fri Aug 06 10:14:54 AEST 2021 Thread[DRDAConnThread_2,5,main]
ERROR XJ001: Java exception: 'access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH"):
java.security.AccessControlException'.
java.sql.SQLException: Java exception: 'access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH"):
java.security.AccessControlException'.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141)
    at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252)
    at org.apache.derby.impl.jdbc.Util.javaException(Util.java:274)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:444)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:439)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:360)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2662)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
Caused by: ERROR XJ001: Java exception: 'access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH"):
java.security.AccessControlException'.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75)
    ... 23 more
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    ... 15 more
============= begin nested exception, level (1) ===========
ERROR XJ001: Java exception: 'access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH"):
java.security.AccessControlException'.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141)
    at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252)
    at org.apache.derby.impl.jdbc.Util.javaException(Util.java:274)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:444)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:439)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:360)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2662)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    ... 15 more
============= end nested exception, level (1) ===========
============= begin nested exception, level (2) ===========
java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
============= end nested exception, level (2) ===========
Fri Aug 06 10:14:54 AEST 2021 Thread[DRDAConnThread_2,5,main] Cleanup
action starting
java.sql.SQLException: Failed to create database 'seconddb', see the
next exception for details.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141)
    at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2661)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
Caused by: ERROR XJ041: Failed to create database 'seconddb', see the
next exception for details.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75)
    ... 18 more
Caused by: ERROR XBM01: Startup failed due to an exception. See next
exception for details.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.iapi.services.monitor.Monitor.exceptionStartingModule(Monitor.java:743)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1857)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    ... 15 more
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    ... 22 more
============= begin nested exception, level (1) ===========
java.sql.SQLException: Startup failed due to an exception. See next
exception for details.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141)
    at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:438)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:360)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2662)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
Caused by: ERROR XBM01: Startup failed due to an exception. See next
exception for details.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75)
    ... 21 more
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    ... 15 more
============= end nested exception, level (1) ===========
============= begin nested exception, level (2) ===========
java.sql.SQLException: Java exception: 'access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH"):
java.security.AccessControlException'.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141)
    at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:252)
    at org.apache.derby.impl.jdbc.Util.javaException(Util.java:274)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:444)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:439)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:360)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2405)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2662)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:435)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:660)
    at org.apache.derby.iapi.jdbc.InternalDriver$1.run(InternalDriver.java:656)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.iapi.jdbc.InternalDriver.getNewEmbedConnection(InternalDriver.java:654)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:300)
    at org.apache.derby.iapi.jdbc.InternalDriver.connect(InternalDriver.java:967)
    at org.apache.derby.jdbc.EmbeddedDriver.connect(EmbeddedDriver.java:125)
    at org.apache.derby.impl.drda.Database.makeConnection(Database.java:253)
    at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1476)
    at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1426)
    at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:3380)
    at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1210)
    at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:1010)
    at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:300)
Caused by: ERROR XJ001: Java exception: 'access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH"):
java.security.AccessControlException'.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75)
    ... 23 more
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    ... 15 more
============= end nested exception, level (2) ===========
{noformat}

I cannot reproduce this issue using Derby 10.15.2.0 and Open JDK 11 (build 11+28) on Mac OSX 11.2.3. This appears to be platform-specific behavior in Open JDK from version 11 onward. From the trailing stack trace stanza...

{noformat}
Caused by: java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "getenv.SOURCE_DATE_EPOCH")
    at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.base/java.security.AccessController.checkPermission(AccessController.java:897)
    at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322)
    at java.base/java.lang.System.getenv(System.java:999)
    at java.base/java.util.Properties.getFormattedTimestamp(Properties.java:1590)
    at java.base/java.util.Properties.store0(Properties.java:932)
    at java.base/java.util.Properties.store(Properties.java:921)
    at org.apache.derby.impl.services.monitor.StorageFactoryService$5.run(StorageFactoryService.java:369)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.services.monitor.StorageFactoryService.saveServiceProperties(StorageFactoryService.java:347)
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1840)
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1022)
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(FileMonitor.java:48)
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:650)
    at org.apache.derby.impl.jdbc.EmbedConnection$5.run(EmbedConnection.java:4067)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.apache.derby.impl.jdbc.EmbedConnection.createPersistentService(EmbedConnection.java:4061)
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:2654)
    ... 15 more
{noformat}

...an extra permission (new java.lang.RuntimePermission("getenv.SOURCE_DATE_EPOCH")) is needed on Ubuntu in order to persist the database creation properties (service.properties).

SOURCE_DATE_EPOCH is a Linux environment variable: https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html

This issue and a workaround are discussed at https://chalmers.instructure.com/courses/8915/pages/f-dot-a-q-common-issues

Two interesting questions are:

Q1) Why does the JVM need to read the value of SOURCE_DATE_EPOCH when storing service.properties?

Q2) What attack is Open JDK trying to parry by limiting the visibility of SOURCE_DATE_EPOCH?


> java.security.AccessControlException when creating a DB remotely: Permission getenv.SOURCE_DATE_EPOCH
> -----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-7122
>                 URL: https://issues.apache.org/jira/browse/DERBY-7122
>             Project: Derby
>          Issue Type: Bug
>            Reporter: Art O Cathain
>            Priority: Major
>         Attachments: derby.log
>
>
> Following the tutorial at [https://db.apache.org/derby/docs/10.15/getstart/twwdactivity2.html] I get an AccessControlException in the server log when trying to create a DB (via CONNECT 'jdbc:derby://localhost:1527/seconddb;create=true')
> This is with derby 10.15.2.0 but the same is observed in 10.14
> OS version: Ubuntu 21.04
> Java version:
> openjdk version "11.0.11" 2021-04-20
> OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2)
> OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2, mixed mode)
> but OpenJDK 16 and 17(early access) have the same problem



--
This message was sent by Atlassian Jira
(v8.3.4#803005)