0002-feeder-insert-data-inside-a-transaction-56039.patch
wcs_olap/feeder.py | ||
---|---|---|
340 | 340 |
self.logger.error('Failed to execute %r with vars %s, raised %s', sql, reprlib.repr(vars or []), e) |
341 | 341 |
raise |
342 | 342 | |
343 |
@contextlib.contextmanager |
|
344 |
def atomic(self): |
|
345 |
self.ex('BEGIN') |
|
346 |
try: |
|
347 |
yield |
|
348 |
self.ex('COMMIT') |
|
349 |
except Exception: |
|
350 |
self.ex('ROLLBACK') |
|
351 |
raise |
|
352 | ||
343 | 353 |
def do_schema(self): |
344 | 354 |
self.ex('SET search_path = public') |
345 | 355 |
self.logger.debug('dropping schema %s', self.schema_temp) |
... | ... | |
1175 | 1185 |
self.logger.info('feed formdef %s', self.formdef.slug) |
1176 | 1186 |
self.do_statuses() |
1177 | 1187 |
self.do_data_table() |
1178 |
self.do_data() |
|
1188 |
with self.atomic(): |
|
1189 |
self.do_data() |
|
1179 | 1190 |
finally: |
1180 | 1191 |
self.olap_feeder.ctx.pop() |
1181 |
- |