Comment 14 for bug 368626

Revision history for this message
Matteo Settenvini (tchernobog) wrote :

This bug is back for me in Natty, maybe it appeared again after the transition to Python 2.7.
I have a folder in my Ubuntu One space called "Blekinge Tekniska Högskola" (please note the umlaut).

Now Ubuntu One is not synchronizing at all, because it bails out with:

matteo@orchid:~/.cache$ /usr/lib/ubuntuone-client/ubuntuone-syncdaemon/usr/lib/pymodules/python2.7/ubuntuone/syncdaemon/filesystem_manager.py:581: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
  if path[:len_base] == base_path and sep not in path[len_base:]:
Unhandled error in Deferred:
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/ubuntuone/syncdaemon/local_rescan.py", line 337, in _scan_tree
    d.addCallbacks(self._scan_one_dir)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 249, in addCallbacks
    self._runCallbacks()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 441, in _runCallbacks
    self.result = callback(self.result, *args, **kw)
  File "/usr/lib/pymodules/python2.7/ubuntuone/syncdaemon/local_rescan.py", line 679, in _scan_one_dir
    d = defer.execute(scan)
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 96, in execute
    result = callable(*args, **kw)
  File "/usr/lib/pymodules/python2.7/ubuntuone/syncdaemon/local_rescan.py", line 639, in scan
    share)
  File "/usr/lib/pymodules/python2.7/ubuntuone/syncdaemon/local_rescan.py", line 528, in _compare
    objs = self.fsm.get_mdobjs_by_share_id(share.volume_id, fullname)
  File "/usr/lib/pymodules/python2.7/ubuntuone/syncdaemon/filesystem_manager.py", line 567, in get_mdobjs_by_share_id
    if path.startswith(base_path):
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 43: ordinal not in range(128)

My guess is that some variable which should be unicode-aware (base_path, by the look of it?) is in fact passed a bytestring.
I tried to debug this a little, but since I am not a Python developer I stopped after hitting that line 567 in filesystem_manager.py with a breakpoint.

I have other filenames with UTF-8 characters, so renaming all of them would be quite a pain. Plus, it is supposed to work, right?
I am using the it_IT.UTF8 locale, if that helps.