@@ -155,6 +155,8 @@ def generate_report_entities(
155155 entities .append (validation_report_entity )
156156
157157 dataset = get_dataset (dataset_stable_id , session )
158+ if not dataset :
159+ raise Exception (f"Dataset { dataset_stable_id } not found." )
158160 dataset .validation_reports .append (validation_report_entity )
159161
160162 extracted_timezone = extract_timezone_from_json_validation_report (json_report )
@@ -251,32 +253,36 @@ def create_validation_report_entities(
251253 return str (error ), 500
252254
253255 try :
254- logging .info ("Database session started." )
255256 # Generate the database entities required for the report
256- try :
257- entities = generate_report_entities (
258- version ,
259- validated_at ,
260- json_report ,
261- dataset_stable_id ,
262- db_session ,
263- feed_stable_id ,
264- )
265- except Exception as error :
266- return str (error ), 200 # Report already exists
257+ # If an error is thrown we should let the retry mechanism to do its work
258+ entities = generate_report_entities (
259+ version ,
260+ validated_at ,
261+ json_report ,
262+ dataset_stable_id ,
263+ db_session ,
264+ feed_stable_id ,
265+ )
267266
268- # Commit the entities to the database
269267 for entity in entities :
270268 db_session .add (entity )
271- logging .info (f"Committing { len (entities )} entities to the database." )
272- db_session .commit ()
273- logging .info ("Entities committed successfully." )
269+ # In this case the report entities are already in the DB or cannot be saved for other reasons
270+ # In any case, this will fail in any retried event
271+ try :
272+ logging .info ("Committing %s entities to the database." , len (entities ))
273+ db_session .commit ()
274+ logging .info ("Entities committed successfully." )
275+ except Exception as error :
276+ logging .warning (
277+ "Could not commit %s entities to the database: %s" , entities , error
278+ )
279+ return str (error ), 200
274280
275281 update_feed_statuses_query (db_session , [feed_stable_id ])
276282
277283 return f"Created { len (entities )} entities." , 200
278284 except Exception as error :
279- logging .error (f "Error creating validation report entities: { error } " )
285+ logging .error ("Error creating validation report entities: : %s" , error )
280286 return f"Error creating validation report entities: { error } " , 500
281287 finally :
282288 pass
0 commit comments