self._objid = None
self._classname = 'DropUploader'
+ self._upload_lazy_tail = None
self._pending = set()
self._client = client
self._stats_provider = client.stats_provider
self._turn_deque()
def _append_to_deque(self, path):
- print "_append_to_deque"
self._upload_deque.append(path)
self._pending.add(path)
self._stats_provider.count('drop_upload.objects_queued', 1)
path = self._upload_deque.pop()
except IndexError:
self._log("magic folder upload deque is now empty")
+ self._upload_lazy_tail = None
return
- d = task.deferLater(reactor, 0, self._process, path)
- d.addCallback(lambda ign: self._turn_deque())
+ if self._upload_lazy_tail is not None:
+ self._upload_lazy_tail.addCallback(lambda ign: task.deferLater(reactor, 0, self._process, path))
+ else:
+ self._upload_lazy_tail = task.deferLater(reactor, 0, self._process, path)
+ self._upload_lazy_tail.addCallback(lambda ign: self._turn_deque())
def _notify(self, opaque, path, events_mask):
self._log("inotify event %r, %r, %r\n" % (opaque, path, ', '.join(self._inotify.humanReadableMask(events_mask))))