Project

General

Profile

Bug #2872

IOException in Windows

Added by Ovidiu Maxiniuc over 8 years ago. Updated over 4 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Start date:
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:

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)

Also available in: Atom PDF