From: Stavros Sachtouris Date: Wed, 11 Dec 2013 10:59:25 +0000 (+0200) Subject: Fix bug w. 0 file syncing X-Git-Tag: 0.12rc6~5 X-Git-Url: https://code.grnet.gr/git/kamaki/commitdiff_plain/43f798ab15973316a53a36380702415cdea8c6b9?hp=e44f33f71e83d5f7b8515c1a0899a84baa5f2be8 Fix bug w. 0 file syncing --- diff --git a/kamaki/clients/pithos/__init__.py b/kamaki/clients/pithos/__init__.py index ef903f9..c6c51ba 100644 --- a/kamaki/clients/pithos/__init__.py +++ b/kamaki/clients/pithos/__init__.py @@ -66,9 +66,11 @@ def _range_up(start, end, max_value, a_range): :returns: (str) a range string cut-off for the start-end range an empty response means this window is out of range """ - assert start >= 0, '_range_up was called with start < 0' - assert end >= start, '_range_up was called with end < start' - assert end <= max_value, '_range_up was called with max_value < end' + assert start >= 0, '_range_up called w. start(%s) < 0' % start + assert end >= start, '_range_up called w. end(%s) < start(%s)' % ( + end, start) + assert end <= max_value, '_range_up called w. max_value(%s) < end(%s)' % ( + max_value, end) if not a_range: return '%s-%s' % (start, end) selected = [] @@ -729,19 +731,21 @@ class PithosClient(PithosRestClient): self._cb_next(len(blockids) - len(unsaved)) if unsaved: key = unsaved[0] - self._watch_thread_limit(flying.values()) - self._thread2file( - flying, blockid_dict, local_file, offset, - **restargs) - end = total_size - 1 if ( - key + blocksize > total_size) else key + blocksize - 1 - data_range = _range_up(key, end, total_size, filerange) - if not data_range: - self._cb_next() - continue - restargs['async_headers'] = {'Range': 'bytes=%s' % data_range} - flying[key] = self._get_block_async(obj, **restargs) - blockid_dict[key] = unsaved + if key: + self._watch_thread_limit(flying.values()) + self._thread2file( + flying, blockid_dict, local_file, offset, + **restargs) + end = total_size - 1 if ( + key + blocksize > total_size) else key + blocksize - 1 + data_range = _range_up(key, end, total_size, filerange) + if not data_range: + self._cb_next() + continue + restargs[ + 'async_headers'] = {'Range': 'bytes=%s' % data_range} + flying[key] = self._get_block_async(obj, **restargs) + blockid_dict[key] = unsaved for thread in flying.values(): thread.join()