Issue2120
Created on 2014-03-27.19:32:56 by saynt, last changed 2015-03-24.03:44:03 by zyasoft.
msg8264 (view) |
Author: Rob Jones (saynt) |
Date: 2014-03-27.19:41:31 |
|
os.mkdir() fails with Errno 3 [No such process] when trying to execute on a UNC path of the form r'\\server\share\path\to\dir\to\create'. This works when the share is mounted to a drive letter and created using a path of the form r'X:\path\to\dir\to\create'. This may be loosely related to issue #2014.
|
msg8307 (view) |
Author: Jeff Allen (jeff.allen) |
Date: 2014-04-24.22:02:22 |
|
I've had a look at this (at first to see if I caused it) and I can see it go wrong. I think maybe the fault is with jnr.posix. A path like "\\MYHOST\Users\Public\test" (to be created) gets as far as this line:
https://github.com/jnr/jnr-posix/blob/master/src/main/java/jnr/posix/util/WindowsHelpers.java#L27
where "//?/" is stuck on the front. I think that would be right for a drive-based path like "C:\Users\Public\test" but here we should be writing "//?/UNC\MYHOST\Users\Public\test".
If I force it to have that value (in the debugger) I find the directory is created.
|
msg9499 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-02-08.03:40:16 |
|
Is this still an issue given the upgrade to JNR Posix 3.0.9?
Another option is to use http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#createDirectory(java.nio.file.Path,%20java.nio.file.attribute.FileAttribute...), which should support setting the desired mode
|
msg9573 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-03-03.17:21:58 |
|
Finally looked into how I could get UNC paths without having to configure any network shares. So these are in fact available, eg, \\localhost\C$\ is the same as C:\ - something probably not surprising to actual Windows users, but I just run Windows in a VM to test Jython on it.
More details here, http://stackoverflow.com/a/2790936/423006
So os.listdir(r"\\localhost\C$") works, but not os.mkdir(r"\\localhost\C$\foobaz"). Looks like the solution is to once again use Java NIO2 instead of depending on JNR for such functionality, as I suggested in my previous message (msg9499).
|
msg9584 (view) |
Author: Nazar (nazarlviv07) |
Date: 2015-03-04.08:38:38 |
|
Issue #2277 was closed due to duplicate of this issue.
But when I try the simpler case of os.mkdir to see if this is the case I received error (OSError: [Errno 17] File exists).
So in my case of os.mkdir and os.makedirs we have the same error OSError: [Errno 17] File exists.
Logs are below:
================================================
1)In case os.mkdir
os.mkdir(dirname)
os.mkdir(dirname)
OSError: [Errno 17] File exists: '\\\\1.9.83-20150203083249\\docs\\doctrees\\subfolder'
2)In case os.makedirs
os.makedirs(dirname)
File "\\1.9.83-20150203085148\lib\jython-standalone-2.7-b4.jar\Lib\os.py", line 172, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '\\\\1.9.83-20150203085148\\docs\\doctrees\\subfolder'
============================================================
In both cases folder "subfolder" is not exist before and after execution the program.
Probably issue #2120 and #2277 is not the same.
Correct me if I am wrong.
|
msg9587 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-03-05.22:24:33 |
|
Blocker for RC1, per discussion here https://plus.google.com/u/0/106351219134006807463/posts/KfBcuGo2omx?cfem=1
re #2277 os.makedirs simply calls os.mkdir; so long as os.mkdir returns the correct error (errno.EEXIST), it's good. Of course the behavior we are seeing in this bug is that JNR Posix is wrongly returning errno.EEXIST.
Note that the original report of this bug (msg8264), it was returning a different errno, but I suspect that got changed as part of the JNR Posix upgrade.
|
msg9659 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-03-16.04:41:56 |
|
Fixed as of https://hg.python.org/jython/rev/9b911ee72842
|
msg9664 (view) |
Author: Jim Baker (zyasoft) |
Date: 2015-03-16.16:02:05 |
|
One more fix was required, see https://hg.python.org/jython/rev/19eee6ac6d0a
Should be complete now
|
|
Date |
User |
Action |
Args |
2015-03-24 03:44:03 | zyasoft | set | status: pending -> closed |
2015-03-16 16:02:05 | zyasoft | set | messages:
+ msg9664 |
2015-03-16 04:41:57 | zyasoft | set | status: open -> pending resolution: accepted -> fixed messages:
+ msg9659 |
2015-03-05 22:24:34 | zyasoft | set | priority: high -> urgent messages:
+ msg9587 |
2015-03-04 08:38:39 | nazarlviv07 | set | nosy:
+ nazarlviv07 messages:
+ msg9584 |
2015-03-03 17:22:13 | zyasoft | set | priority: high assignee: zyasoft resolution: remind -> accepted |
2015-03-03 17:21:58 | zyasoft | set | messages:
+ msg9573 |
2015-02-13 16:01:39 | zyasoft | set | resolution: remind |
2015-02-08 03:40:16 | zyasoft | set | nosy:
+ zyasoft messages:
+ msg9499 |
2014-04-24 22:02:22 | jeff.allen | set | nosy:
+ jeff.allen messages:
+ msg8307 |
2014-04-01 23:36:04 | santa4nt | set | nosy:
+ santa4nt |
2014-03-27 19:41:31 | saynt | set | messages:
+ msg8264 |
2014-03-27 19:32:56 | saynt | create | |
|