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