Moving a folder while Download()s are running causes exceptions.RuntimeError: maximum recursion depth exceeded while calling a Python object

Bug #1036068 reported by Roman Yepishev
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ubuntuone-client (Ubuntu)
Triaged
Undecided
Ubuntu One Client Engineering team

Bug Description

I created a folder named "BrokenFolder" on a remote machine and filled it with lots of empty files.
Reconnected the local machine to Ubuntu One and the client started to download the files.
In the middle of a transfer I moved the folder containing the files being downloaded first to another name ("SomeOtherFolder") and then moved it away from Ubuntu One directory.

2012-08-13 09:47:09,906 - ubuntuone.SyncDaemon.ActionQueue - DEBUG - offload pop: Download ('', 'ea25e3d8-20b9-41c8-9c16-bd1354fd0c65', 'sha1:d
a39a3ee5e6b4b0d3255bfef95601890afd80709', '/home/rtg/Ubuntu One/BrokenFolder/6/91') {}
2012-08-13 09:47:09,907 - ubuntuone.SyncDaemon.ActionQueue - DEBUG - Download share:''
  node:'ea25e3d8-20b9-41c8-9c16-bd1354fd0c65' Download(path="'/home/rtg/Ubuntu One/BrokenFolder/6/91'", running='False', share_id="''", node_
id="'ea25e3d8-20b9-41c8-9c16-bd1354fd0c65'", server_hash="'sha1:da39a3ee5e6b4b0d3255bfef95601890afd80709'") queueing
2012-08-13 09:47:09,907 - ubuntuone.SyncDaemon.EQ - DEBUG - push_event: SYS_QUEUE_ADDED, kwargs: {'command': <ubuntuone.syncdaemon.action_queue
.Download object at 0x41112c0>}
2012-08-13 09:47:09,910 - twisted - ERROR - Unhandled error in Deferred:
2012-08-13 09:47:09,911 - twisted - ERROR - Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1181, in unwindGenerator
    return _inlineCallbacks(None, gen, Deferred())
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1039, in _inlineCallbacks
    result = g.send(result)
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/action_queue.py", line 1093, in _really_execute
    yield cmd.go()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1181, in unwindGenerator
    return _inlineCallbacks(None, gen, Deferred())
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1039, in _inlineCallbacks
    result = g.send(result)
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/action_queue.py", line 1379, in go
    self.pathlock_deferred = self._acquire_pathlock()
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/action_queue.py", line 2301, in _acquire_pathlock
    return pathlock.acquire(*self.path.split(os.path.sep), logger=self.log)
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/action_queue.py", line 176, in acquire
    on_children, len(wait_for))
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/logger.py", line 91, in debug
    self._log(self.logger.debug, *args)
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/logger.py", line 87, in _log
    logger_func(text, *args[1:])
  File "/usr/lib/python2.7/logging/__init__.py", line 1128, in debug
    self._log(DEBUG, msg, args, **kwargs)
  File "/usr/lib/python2.7/logging/__init__.py", line 1258, in _log
    self.handle(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 1268, in handle
    self.callHandlers(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 1308, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 748, in handle
    self.emit(record)
  File "/usr/lib/python2.7/logging/handlers.py", line 83, in emit
    self.handleError(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 801, in handleError
    None, sys.stderr)
  File "/usr/lib/python2.7/traceback.py", line 126, in print_exception
    lines = format_exception_only(etype, value)
  File "/usr/lib/python2.7/traceback.py", line 178, in format_exception_only
    return [_format_final_exc_line(stype, value)]
  File "/usr/lib/python2.7/traceback.py", line 204, in _format_final_exc_line
    valuestr = _some_str(value)
  File "/usr/lib/python2.7/traceback.py", line 221, in _some_str
    return '<unprintable %s object>' % type(value).__name__
exceptions.RuntimeError: maximum recursion depth exceeded while calling a Python object

At this point Ubuntu One is not advancing the queue and is stuck.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: ubuntuone-client 3.0.2-0ubuntu1
ProcVersionSignature: Ubuntu 3.2.0-29.46-generic 3.2.24
Uname: Linux 3.2.0-29-generic x86_64
ApportVersion: 2.0.1-0ubuntu12
Architecture: amd64
Date: Mon Aug 13 10:03:46 2012
EcryptfsInUse: Yes
InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Alpha amd64 (20120225)
PackageArchitecture: all
SourcePackage: ubuntuone-client
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Roman Yepishev (rye) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.