mirror of
https://github.com/lucaspalomodevelop/indico-plugins.git
synced 2026-03-13 07:29:39 +00:00
Handle exceptions in the Uploader
This commit is contained in:
parent
0ba1673b73
commit
d5dac3cc17
@ -42,9 +42,14 @@ class Uploader(object):
|
||||
|
||||
:param records: an iterable containing queue entries
|
||||
"""
|
||||
self_name = type(self).__name__
|
||||
for i, batch in enumerate(grouper(records, self.BATCH_SIZE, skip_missing=True), 1):
|
||||
self.logger.debug('{} processing batch {}'.format(type(self).__name__, i))
|
||||
self.upload_records(batch, from_queue=True)
|
||||
self.logger.debug('{} processing batch {}'.format(self_name, i))
|
||||
try:
|
||||
self.upload_records(batch, from_queue=True)
|
||||
except Exception:
|
||||
self.logger.exception('{} could not upload batch'.format(self_name))
|
||||
return
|
||||
self.processed_records(batch)
|
||||
if self.task:
|
||||
self.task.extend_runtime()
|
||||
|
||||
@ -14,7 +14,6 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Indico; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pytest
|
||||
from mock import MagicMock
|
||||
|
||||
from indico_livesync.models.queue import LiveSyncQueueEntry, ChangeType
|
||||
@ -26,6 +25,7 @@ class RecordingUploader(Uploader):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(RecordingUploader, self).__init__(*args, **kwargs)
|
||||
self._uploaded = []
|
||||
self.logger = MagicMock()
|
||||
|
||||
def upload_records(self, records, from_queue):
|
||||
self._uploaded.append((records, from_queue))
|
||||
@ -98,9 +98,9 @@ def test_run_failing(mocker):
|
||||
uploader = FailingUploader(create_mock_agent())
|
||||
uploader.BATCH_SIZE = 3
|
||||
records = tuple(LiveSyncQueueEntry(change=ChangeType.created) for _ in xrange(10))
|
||||
with pytest.raises(Exception):
|
||||
uploader.run(records)
|
||||
# No uploads should bappen after a failed batch
|
||||
uploader.run(records)
|
||||
assert uploader.logger.exception.called
|
||||
# No uploads should happen after a failed batch
|
||||
assert uploader._uploaded == [(records[:3], True), (records[3:6], True)]
|
||||
# Only successful records should be marked as processed
|
||||
assert all(record.processed for record in records[:3])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user