Skip to content

Commit c94280e

Browse files
committed
Own CBS import commit and rollback in main so the full flow is one transaction.
1 parent 69e0a1b commit c94280e

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

anyway/parsers/cbs/executor.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,8 +1157,6 @@ def _build_hebrew_tables_and_derived_data():
11571157
with log_duration("Importing safety data tables"):
11581158
sd_utils.load_data(session=db.session, should_commit=False)
11591159
logging.debug("Completed load of safety data tables")
1160-
db.session.commit()
1161-
logging.debug("data commited successfully")
11621160

11631161

11641162
def main(batch_size, source, load_start_year=None, allow_missing=False):
@@ -1179,7 +1177,10 @@ def main(batch_size, source, load_start_year=None, allow_missing=False):
11791177

11801178
_log_import_summary(total, started)
11811179
_build_hebrew_tables_and_derived_data()
1180+
db.session.commit()
1181+
logging.debug("data committed successfully")
11821182
except Exception as ex:
1183+
db.session.rollback()
11831184
print("Traceback: {0}".format(traceback.format_exc()))
11841185
raise CBSParsingFailed(message=str(ex))
11851186
# Todo - send an email that an exception occured

tests/parsers/cbs/test_executor.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ def test_import_streets_is_called_once_when_source_is_s3(monkeypatch, mock_s3_da
1919
monkeypatch.setattr('anyway.parsers.cbs.executor.delete_cbs_entries', delete_cbs_entries)
2020
monkeypatch.setattr('anyway.parsers.cbs.executor.fill_db_geo_data', MagicMock())
2121
monkeypatch.setattr('anyway.parsers.cbs.executor.create_tables', MagicMock())
22+
monkeypatch.setattr('anyway.parsers.cbs.executor.recreate_table_for_location_extraction', MagicMock())
23+
monkeypatch.setattr('anyway.parsers.cbs.executor.sd_utils.load_data', MagicMock())
24+
monkeypatch.setattr('anyway.parsers.cbs.executor.db.session.commit', MagicMock())
2225

2326
# Act
2427
main(batch_size=MagicMock(), source='s3')
@@ -28,9 +31,14 @@ def test_import_streets_is_called_once_when_source_is_s3(monkeypatch, mock_s3_da
2831

2932

3033
def test_cbs_parsing_failed_is_raised_when_something_bad_happens(monkeypatch):
34+
monkeypatch.setattr('anyway.parsers.cbs.executor._import_from_s3', MagicMock(return_value=0))
35+
monkeypatch.setattr('anyway.parsers.cbs.executor.fill_db_geo_data', MagicMock())
3136
monkeypatch.setattr('anyway.parsers.cbs.executor.create_tables',
3237
MagicMock(side_effect=Exception('something bad')))
38+
rollback = MagicMock()
39+
monkeypatch.setattr('anyway.parsers.cbs.executor.db.session.rollback', rollback)
3340

3441
with pytest.raises(CBSParsingFailed, match='Exception occurred while loading the cbs data: something bad'):
35-
main(batch_size=MagicMock(), source=MagicMock())
42+
main(batch_size=MagicMock(), source='s3')
3643

44+
rollback.assert_called_once()

0 commit comments

Comments
 (0)