[ 
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)

Reply via email to