@@ -296,54 +296,55 @@ def _populate1(
296
296
"""
297
297
make = self ._make_tuples if hasattr (self , "_make_tuples" ) else self .make
298
298
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 :
302
317
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
305
337
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
347
348
348
349
def progress (self , * restrictions , display = False ):
349
350
"""
0 commit comments