Hi.
I'm using jclouds 2.0.0-SNAPSHOT and I'm encountering strange permission
problems using the Filesystem provider under Windows 7 (with UAC)
using JDK8.
I'm trying to put a blob in a container directory starting in the root
of a harddisk (not C: - which is even more "special").
My path is (D:) /tmp/storage/mycontainer/file
When I try to put the blob using:
blobStore.createContainerInLocation(null, directory,
CreateContainerOptions.Builder.publicRead());
etag = blobStore.putBlob(directory, fileBlob);
I'll get:
Caused by: java.io.IOException: Could not rename file
\tmp\storage\mycontainer\file-cb84907b-a601-4cff-b21e-9ee0f268b567 to
\tmp\storage\mycontainer\file
at
org.jclouds.filesystem.strategy.internal.FilesystemStorageStrategyImpl.putBlob(FilesystemStorageStrategyImpl.java:500)
~[filesystem-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
at
org.jclouds.blobstore.config.LocalBlobStore.putBlob(LocalBlobStore.java:757)
~[jclouds-blobstore-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
at
org.jclouds.blobstore.config.LocalBlobStore.putBlob(LocalBlobStore.java:522)
~[jclouds-blobstore-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
...
Looking at the directory, /tmp/storage/mycontainer exists, but it is
empty. Trying to create files in this directory via Windows Explorer,
works. But renaming this
file afterwards doesn't. It complains about missing Administrator rights
- which I have.
Looking at the mycontainer directory permissions, it looks strange.
Every group/user is set to "special" permission - all other permissions
are removed.
Looking at this "special" permission, only read permissions are set.
That explains, why rename isn't allowed here.
Changing _any_ permission, e.g. "taking ownership" and saving it, allows
renaming again.
After this manual change, jclouds operates without any errors for
further puttBlobs in this container.
I already deleted the directory, made a filesystem check and rebootet
the machine. Behavior stays the same. I also disabled my Antivirus
solution - just in case.
Funny thing: changing the path from (D:) /tmp/... to the Windows temp
directory %TMP% (e.g.
C:\Users\<user>\AppData\Local\Temp\mycontainer\...) does not lead
to the exception above!
I know that jclouds is doing some Acl magic depending on the OS e.g.
getting the "Everyone" group from Windows and setting special
permissions to the container
and files. Maybe it's a Windows 7 specialty when not using the Windows
temp directory? Where are the ITs putting their stuff for testing? Are
there even Windows
related tests for the Filesystem storage provider ;)?
Any help is appreciated.
Thanks
Veit