Skip to content

Commit 18fd619

Browse files
author
Thinh Nguyen
committed
code cleanup - refactor _populate1
1 parent 008a723 commit 18fd619

File tree

1 file changed

+47
-46
lines changed

1 file changed

+47
-46
lines changed

datajoint/autopopulate.py

Lines changed: 47 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -296,54 +296,55 @@ def _populate1(
296296
"""
297297
make = self._make_tuples if hasattr(self, "_make_tuples") else self.make
298298

299-
if jobs is None or jobs.reserve(self.target.table_name, self._job_key(key)):
300-
self.connection.start_transaction()
301-
if key in self.target: # already populated
299+
if jobs is not None and not jobs.reserve(
300+
self.target.table_name, self._job_key(key)
301+
):
302+
return False
303+
304+
self.connection.start_transaction()
305+
if key in self.target: # already populated
306+
self.connection.cancel_transaction()
307+
if jobs is not None:
308+
jobs.complete(self.target.table_name, self._job_key(key))
309+
return False
310+
311+
logger.debug(f"Making {key} -> {self.target.full_table_name}")
312+
self.__class__._allow_insert = True
313+
try:
314+
make(dict(key), **(make_kwargs or {}))
315+
except (KeyboardInterrupt, SystemExit, Exception) as error:
316+
try:
302317
self.connection.cancel_transaction()
303-
if jobs is not None:
304-
jobs.complete(self.target.table_name, self._job_key(key))
318+
except LostConnectionError:
319+
pass
320+
error_message = "{exception}{msg}".format(
321+
exception=error.__class__.__name__,
322+
msg=": " + str(error) if str(error) else "",
323+
)
324+
logger.debug(
325+
f"Error making {key} -> {self.target.full_table_name} - {error_message}"
326+
)
327+
if jobs is not None:
328+
# show error name and error message (if any)
329+
jobs.error(
330+
self.target.table_name,
331+
self._job_key(key),
332+
error_message=error_message,
333+
error_stack=traceback.format_exc(),
334+
)
335+
if not suppress_errors or isinstance(error, SystemExit):
336+
raise
305337
else:
306-
logger.debug(f"Making {key} -> {self.target.full_table_name}")
307-
self.__class__._allow_insert = True
308-
try:
309-
make(dict(key), **(make_kwargs or {}))
310-
except (KeyboardInterrupt, SystemExit, Exception) as error:
311-
try:
312-
self.connection.cancel_transaction()
313-
except LostConnectionError:
314-
pass
315-
error_message = "{exception}{msg}".format(
316-
exception=error.__class__.__name__,
317-
msg=": " + str(error) if str(error) else "",
318-
)
319-
logger.debug(
320-
f"Error making {key} -> {self.target.full_table_name} - {error_message}"
321-
)
322-
if jobs is not None:
323-
# show error name and error message (if any)
324-
jobs.error(
325-
self.target.table_name,
326-
self._job_key(key),
327-
error_message=error_message,
328-
error_stack=traceback.format_exc(),
329-
)
330-
if not suppress_errors or isinstance(error, SystemExit):
331-
raise
332-
else:
333-
logger.error(error)
334-
return key, error if return_exception_objects else error_message
335-
else:
336-
self.connection.commit_transaction()
337-
logger.debug(
338-
f"Success making {key} -> {self.target.full_table_name}"
339-
)
340-
if jobs is not None:
341-
jobs.complete(self.target.table_name, self._job_key(key))
342-
return True
343-
finally:
344-
self.__class__._allow_insert = False
345-
346-
return False
338+
logger.error(error)
339+
return key, error if return_exception_objects else error_message
340+
else:
341+
self.connection.commit_transaction()
342+
logger.debug(f"Success making {key} -> {self.target.full_table_name}")
343+
if jobs is not None:
344+
jobs.complete(self.target.table_name, self._job_key(key))
345+
return True
346+
finally:
347+
self.__class__._allow_insert = False
347348

348349
def progress(self, *restrictions, display=False):
349350
"""

0 commit comments

Comments
 (0)