Bug #2872
IOException in Windows
0%
History
#1 Updated by Ovidiu Maxiniuc over 8 years ago
- Subject changed from Windowd to Windows OS support for P2J
This task is dedicated to track encountered issues that prevent P2J to run on Windows OS, other than those related to SQL Server. Normally, Java is not OS dependent, so there shouldn't be such issue except when it comes to native or file system.
At this moment, there are two known issues that need to be addressed:- some
IOException
thrown is some very particular case (I accidentally discovered this when using a cfg file not suited to my system so the E: disk was an empty CD drive). - the (newly introduced and with higher priority, I guess): native console initialization. The work on this issue is documented in task #2583.
#2 Updated by Greg Shah about 8 years ago
- Target version set to Milestone 11
- Start date deleted (
11/20/2015) - Subject changed from Windows OS support for P2J to IOException in Windows
- Assignee set to Eugenie Lyzenko
Ovidiu: please post details of the IOException and how to recreate the problem.
The native console init will be worked separately in #2583.
#3 Updated by Ovidiu Maxiniuc about 8 years ago
The exception is thrown in com\goldencode\p2j\util\Utils.java
. Here is an example of a complete exception stack:
java.io.IOException: The device is not ready at java.io.WinNTFileSystem.canonicalize0(Native Method) at java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:428) at java.io.File.getCanonicalPath(File.java:618) at com.goldencode.p2j.util.Utils.canonicalizePath(Utils.java:898) at com.goldencode.p2j.util.SourceNameMapper.convertName(SourceNameMapper.java:446) at com.goldencode.p2j.util.ControlFlowOps$ExternalProgramResolver.resolve(ControlFlowOps.java:6210) at com.goldencode.p2j.util.ControlFlowOps.invokeExternalProcedure(ControlFlowOps.java:3334) at com.goldencode.p2j.util.Agent.invokeScoped(Agent.java:169) at com.goldencode.p2j.util.Agent.access$600(Agent.java:55) at com.goldencode.p2j.util.Agent$4.execute(Agent.java:752) at com.goldencode.p2j.util.Agent.listen(Agent.java:354) at com.goldencode.p2j.util.AgentPool.start(AgentPool.java:431) at com.goldencode.p2j.util.AppServerManager.startAppServer(AppServerManager.java:828) at com.goldencode.p2j.main.StandardServer.standardEntry(StandardServer.java:263) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.goldencode.p2j.util.MethodInvoker.invoke(MethodInvoker.java:76) at com.goldencode.p2j.net.Dispatcher.processInbound(Dispatcher.java:705) at com.goldencode.p2j.net.Conversation.block(Conversation.java:319) at com.goldencode.p2j.net.Conversation.run(Conversation.java:163) at java.lang.Thread.run(Thread.java:745)
The exact parameter for "f:/l/trng/procode/common", taken from database, table module
probably. Important is that f:
is my optical drive and it was empty at that time. If the drive would have been any other (I tried with A:
or q:
), the method would have returned the canonical path without throwing an exception. There are a number of other path that can come from server.ini
or even hardcoded.
The important thing here is that if the input path for canonicalizePath
is an otherwise invalid (read: inexistent) path the File.getCanonicalPath
will return the best attempt to canonicalize it. If the path is really malformed, a java.io.IOException("Invalid argument") will be thrown.
#4 Updated by Greg Shah over 7 years ago
- Target version changed from Milestone 11 to Cleanup and Stablization for Server Features
#5 Updated by Greg Shah over 4 years ago
- Assignee deleted (
Eugenie Lyzenko)