[
https://issues.apache.org/jira/browse/DERBY-6503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13938987#comment-13938987
]
Knut Anders Hatlen commented on DERBY-6503:
-------------------------------------------
And just as I said we didn't have any reports about this causing any trouble, a
customer reported another variant of the ClassCastException when starting the
network server:
java.lang.ClassCastException: java.nio.file.NoSuchFileException cannot be cast
to java.lang.RuntimeException
(I don't have the stack trace of the original NoSuchFileException that gets
shadowed by the ClassCastException.)
So I'm beginning to wonder if a better solution would be to fail only if the
user has explicitly requested the new functionality by setting
derby.storage.useDefaultFilePermissions=false. In the environments where Derby
now defaults to restricting the file permissions (network server started from
the command line when Java >= 7 and underlying file system is either posix or
supports ACL), and the user hasn't requested the functionality, we should still
try to restrict the permissions, but not fail if the permissions could not be
changed. I think that would combine security out of the box and backwards
compatibility in a good way.
> Starting network server on a network drive fails with JDK 7 on Windows
> ----------------------------------------------------------------------
>
> Key: DERBY-6503
> URL: https://issues.apache.org/jira/browse/DERBY-6503
> Project: Derby
> Issue Type: Bug
> Components: Network Server, Services
> Affects Versions: 10.10.1.1
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
>
> Starting a network server on a network drive with JDK 7 on Windows fails. The
> reported exception is a ClassCastException, but the underlying exception is
> the following:
> java.nio.file.AccessDeniedException: \\host\path\derby.log
> at
> sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
> at
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
> at
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
> at
> sun.nio.fs.WindowsAclFileAttributeView.setAcl(WindowsAclFileAttributeView.java:221)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at
> org.apache.derby.iapi.services.io.FileUtil.limitAccessToOwnerViaACLs(FileUtil.java:897)
> at
> org.apache.derby.iapi.services.io.FileUtil.limitAccessToOwner(FileUtil.java:747)
> at
> org.apache.derby.impl.services.stream.SingleStream.PBmakeFileHPW(SingleStream.java:205)
> at
> org.apache.derby.impl.services.stream.SingleStream.run(SingleStream.java:401)
> at
> org.apache.derby.impl.services.stream.SingleStream.run(SingleStream.java:72)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.apache.derby.impl.services.stream.SingleStream.makeFileHPW(SingleStream.java:394)
> at
> org.apache.derby.impl.services.stream.SingleStream.createDefaultStream(SingleStream.java:356)
> at
> org.apache.derby.impl.services.stream.SingleStream.makeStream(SingleStream.java:132)
> at
> org.apache.derby.impl.services.stream.SingleStream.boot(SingleStream.java:92)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1991)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:334)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:541)
> at
> org.apache.derby.impl.services.monitor.FileMonitor.startModule(FileMonitor.java:44)
> at
> org.apache.derby.iapi.services.monitor.Monitor.startSystemModule(Monitor.java:362)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.runWithState(BaseMonitor.java:343)
> at
> org.apache.derby.impl.services.monitor.FileMonitor.<init>(FileMonitor.java:58)
> at
> org.apache.derby.iapi.services.monitor.Monitor.startMonitor(Monitor.java:285)
> at org.apache.derby.iapi.jdbc.JDBCBoot.boot(JDBCBoot.java:67)
> at org.apache.derby.jdbc.EmbeddedDriver.boot(EmbeddedDriver.java:199)
> at org.apache.derby.jdbc.EmbeddedDriver.<clinit>(EmbeddedDriver.java:95)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:188)
> at
> org.apache.derby.impl.drda.NetworkServerControlImpl.startNetworkServer(NetworkServerControlImpl.java:1032)
> at
> org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(NetworkServerControlImpl.java:732)
> at
> org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(NetworkServerControlImpl.java:2277)
> at
> org.apache.derby.drda.NetworkServerControl.main(NetworkServerControl.java:353)
--
This message was sent by Atlassian JIRA
(v6.2#6252)