[tahoe-lafs-trac-stream] [tahoe-lafs] #1634: TypeError due to "size" being None in pyfilesystem+dokan
tahoe-lafs
trac at tahoe-lafs.org
Wed Dec 19 22:46:00 UTC 2012
#1634: TypeError due to "size" being None in pyfilesystem+dokan
------------------------+--------------------------------------
Reporter: zooko | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone: undecided
Component: code | Version: 1.9.0
Resolution: | Keywords: pyfilesystem dokan error
Launchpad Bug: |
------------------------+--------------------------------------
Changes (by ClashTheBunny):
* cc: clashthebunny@… (added)
Old description:
> I saw this bug report to pyfilesystem:
>
> http://code.google.com/p/pyfilesystem/issues/detail?id=96
>
> {{{
> tahoe-lafs 1.9.0 + pyfilesystem 0.4 (and svn r723) + dokan 0.6.0
> OS Windows 7 x64 Russian + Python 2.7.2 x86
>
> Traceback (most recent call last):
> File "_ctypes/callbacks.c", line 313, in 'calling callback function'
> File "C:\Program Files (x86)\Python27\lib\site-
> packages\fs\expose\dokan\__init__.py", line 256, in wrapper
> return func(self,*args)
> File "C:\Program Files (x86)\Python27\lib\site-
> packages\fs\expose\dokan\__init__.py", line 173, in wrapper
> res = func(*args,**kwds)
> File "C:\Program Files (x86)\Python27\lib\site-packages\fs\errors.py",
> line 191, in wrapper
> return func(*args,**kwds)
> File "C:\Program Files (x86)\Python27\lib\site-
> packages\fs\expose\dokan\__init__.py", line 604, in FindFilesWithPattern
> data = self._info2finddataw(fpath,finfo,None)
> File "C:\Program Files (x86)\Python27\lib\site-
> packages\fs\expose\dokan\__init__.py", line 794, in _info2finddataw
> data.nFileSizeHigh = info.get("size",0) >> 32
> TypeError: unsupported operand type(s) for >>: 'NoneType' and 'int'
> }}}
> As far as I know, pyfilesystem doesn't have a strong test suite, so it
> will require more effort from someone to figure out where exactly the
> problem lies in pyfilesystem, Tahoe-LAFS, dokan, or the interfaces
> between them...
New description:
I saw this bug report to pyfilesystem:
http://code.google.com/p/pyfilesystem/issues/detail?id=96
{{{
tahoe-lafs 1.9.0 + pyfilesystem 0.4 (and svn r723) + dokan 0.6.0
OS Windows 7 x64 Russian + Python 2.7.2 x86
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 313, in 'calling callback function'
File "C:\Program Files (x86)\Python27\lib\site-
packages\fs\expose\dokan\__init__.py", line 256, in wrapper
return func(self,*args)
File "C:\Program Files (x86)\Python27\lib\site-
packages\fs\expose\dokan\__init__.py", line 173, in wrapper
res = func(*args,**kwds)
File "C:\Program Files (x86)\Python27\lib\site-packages\fs\errors.py",
line 191, in wrapper
return func(*args,**kwds)
File "C:\Program Files (x86)\Python27\lib\site-
packages\fs\expose\dokan\__init__.py", line 604, in FindFilesWithPattern
data = self._info2finddataw(fpath,finfo,None)
File "C:\Program Files (x86)\Python27\lib\site-
packages\fs\expose\dokan\__init__.py", line 794, in _info2finddataw
data.nFileSizeHigh = info.get("size",0) >> 32
TypeError: unsupported operand type(s) for >>: 'NoneType' and 'int'
}}}
As far as I know, pyfilesystem doesn't have a strong test suite, so it
will require more effort from someone to figure out where exactly the
problem lies in pyfilesystem, Tahoe-LAFS, dokan, or the interfaces between
them...
--
Comment:
I'm thinking this is related to my same issue. I have a Tahoe-LAFS
mounted through PyFS on Linux and I was using the same one earlier on
Windows with docan. I saw similar things on docan, but didn't write them
down. I mount the directory and do an 'ls'. This is the error I'm seeing
on Linux:
{{{
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-
packages/fs/expose/fuse/fuse_ctypes.py", line 294, in _wrapper_
return func(*args, **kwargs) or 0
File "/usr/local/lib/python2.7/dist-
packages/fs/expose/fuse/fuse_ctypes.py", line 425, in readdir
set_st_attrs(st, attrs)
File "/usr/local/lib/python2.7/dist-
packages/fs/expose/fuse/fuse_ctypes.py", line 239, in set_st_attrs
setattr(st, key, val)
TypeError: an integer is required
}}}
This is due to me having some MDMF files in the directory. When I unlink
them from the directory, I get immediate results from my 'ls'. I think
the problem is that MDMF files don't have a "size" always. In the JSON
for the DIR:CAP, I have the file size listed as:
"size": null
When I run a "check/renew/verify every bit" on the MDMF, it spits out the
size for a while and then the 'ls' works for a time.
The change to fix this should either be in TahoeLAFS to output something
like 0 for a null sized file, or at least an integer, like "-1", or PyFS
should be updated to check "size" for null and replace it with 0 or a
"-1".
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1634#comment:2>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list