Bugzilla – Bug 2996
ws-gram does not handle Windows paths in RSL's
Last modified: 2005-05-18 15:28:19
You need to log in before you can comment on or make changes to this bug.
for a job submission on windows, gram does not like either the drive letter/colon or the back slashes in the stdout/stderr tags. Jarek says this should work. I have included examples of both situations below. The workaround is to use frontslashes, which works, but there is no way to specify other than the current drive. ********************* Driver Letter Problem ********************* ********* Error Log 2005-03-22 21:15:38,179 ERROR exec.StateMachine [Thread- 11,processOpenStdoutState:1058] Invalid URL constructed from stdout path: w:\hello.out java.net.MalformedURLException: Invalid port number: \hello.out at org.globus.util.GlobusURL.parseHostPort(GlobusURL.java:153) at org.globus.util.GlobusURL.<init>(GlobusURL.java:81) at org.globus.exec.service.exec.StateMachine.processOpenStdoutState (StateMachine.java:1051) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.globus.exec.service.exec.StateMachine.processState (StateMachine.java:334) at org.globus.exec.service.exec.RunQueue.run(RunQueue.java:141) *** RSL <job> <executable>c:\util\UnixUtils\usr\local\wbin\echo.exe</executable> <directory>w:\</directory> <argument>Hello World!</argument> <stdout>w:\hello.out</stdout> <stderr>w:\hello.err</stderr> </job> ***************** Backslash Problem ***************** ********* Error Log 2005-03-22 21:25:58,951 ERROR exec.StateMachine [Thread- 12,processOpenStderrState:1147] Unable to se t resource property stdoutURL org.apache.axis.types.URI$MalformedURIException: Path contains invalid character: \ at org.apache.axis.types.URI.initializePath(URI.java:919) at org.apache.axis.types.URI.initialize(URI.java:527) at org.apache.axis.types.URI.<init>(URI.java:283) at org.apache.axis.types.URI.<init>(URI.java:267) at org.globus.exec.service.exec.StateMachine.processOpenStderrState (StateMachine.java:1140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.globus.exec.service.exec.StateMachine.processState (StateMachine.java:334) at org.globus.exec.service.exec.RunQueue.run(RunQueue.java:141) *** RSL <job> <executable>c:\util\UnixUtils\usr\local\wbin\echo.exe</executable> <directory>\tmp</directory> <argument>Hello World!</argument> <stdout>\tmp\hello.out</stdout> <stderr>\tmp\hello.err</stderr> </job>
I can't reproduce this error since I don't have a Windows port. Bob, I think you'll just have to debug it yourself as a part of the porting process. I can help where I can, but I don't see how I'm going to be able to do much with this directly.
Actually, I was doing something different. Ignore my last comment.
This appears to be a limitation in the GlobusURL class. I'm reassigning to Jarek.
This is not a bug GlobusURL. URLs in general use / slashes. The executable, stdout, stderr, etc. values must be first translated into the right URL format (the value cannot just be passed to the URL/URI class). Doing (new File (executable)).toURL() should work.
Fixes in trunk and globus_4_0_branch. The problem was the mapping code that converted the paths to gsiftp URLs. They should all map correctly now, with all '\' characters converted to "%5C" in the stdoutUrl and stderrUrl resource properties to satisfy URI compliance.