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

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

There is some trickiness involved in writing a warning to derby.log when such 
an error occurs. For example, the exception in the bug description happens when 
derby.log is being created, so we'd have to store that information somewhere 
until the engine is up and ready to write to the log.

This feature has been available for a while now, and has been enabled by 
default in the network server, but we haven't seen any reports about 
IOExceptions causing problems (except DERBY-6410, which is a JVM bug). So these 
exceptions don't appear to be a big problem for users currently, and that makes 
me think it might be OK to continue failing when IOExceptions are thrown here. 
Of course they would have to be reported to the user as IOExceptions and not as 
ClassCastExceptions as they are today. Users experiencing such failures could 
either turn off the feature or fix the underlying problem.

At least I think that would be a reasonable first step: Fail in the same 
situations as today, but show the underlying IOException instead of the 
ClassCastException. If we start getting reports from users about such failures 
causing problems, we could consider if we should add some kind of automatic 
fallback logic as the next step.

> 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