@@ -139,6 +139,15 @@ def get_checkers() -> tuple[type[Checker], ...]:
139139 return (AreOwnerAndProjectMatchingJob , IsPackageMatchingJobView )
140140
141141
142+ def report_long_runtime (method : str , length : int , start_time : datetime ):
143+ end_time = datetime .now (timezone .utc )
144+ run_time = elapsed_seconds (start_time , end_time )
145+ if run_time > length :
146+ m = f"{ method } run time takes { run_time } seconds."
147+ logger .info (m )
148+ sentry_integration .send_to_sentry (RuntimeWarning (m ))
149+
150+
142151@configured_as (job_type = JobType .copr_build )
143152@reacts_to (event = copr .Start )
144153class CoprBuildStartHandler (AbstractCoprBuildReportHandler ):
@@ -165,6 +174,7 @@ def set_logs_url(self):
165174 self .build .set_build_logs_url (copr_build_logs )
166175
167176 def run (self ):
177+ run_start_time = datetime .now (timezone .utc )
168178 if not self .build :
169179 model = "SRPMBuildDB" if self .copr_event .chroot == COPR_SRPM_CHROOT else "CoprBuildDB"
170180 msg = f"Copr build { self .copr_event .build_id } not in { model } ."
@@ -201,6 +211,7 @@ def run(self):
201211 )
202212 msg = "SRPM build in Copr has started..."
203213 self .set_start_time ()
214+ report_long_runtime ("SRPM build start" , 120 , run_start_time )
204215 return TaskResults (success = True , details = {"msg" : msg })
205216
206217 self .pushgateway .copr_builds_started .inc ()
@@ -220,6 +231,7 @@ def run(self):
220231 )
221232 msg = f"Build on { self .copr_event .chroot } in copr has started..."
222233 self .set_start_time ()
234+ report_long_runtime ("Copr build start" , 120 , run_start_time )
223235 return TaskResults (success = True , details = {"msg" : msg })
224236
225237
@@ -263,12 +275,15 @@ def measure_time_after_reporting(self):
263275 self .build .target ,
264276 ).ended_on
265277
278+ build_ended_on_datetime = datetime .fromtimestamp (build_ended_on , timezone .utc )
266279 reported_after_time = elapsed_seconds (
267- begin = datetime . fromtimestamp ( build_ended_on , timezone . utc ) ,
280+ begin = build_ended_on_datetime ,
268281 end = reported_time ,
269282 )
270- logger .debug (
271- f"Copr build end reported after { reported_after_time / 60 } minutes." ,
283+ logger .info (
284+ f"Copr build { self .build .build_id } for { self .build .target } "
285+ f"reported after { reported_after_time / 60 } minutes.\n "
286+ f"Copr build ended at { build_ended_on_datetime } and was reported at { reported_time } ."
272287 )
273288
274289 self .pushgateway .copr_build_end_reported_after_time .observe (reported_after_time )
@@ -285,6 +300,13 @@ def set_built_packages(self):
285300 self .build .set_built_packages (built_packages )
286301
287302 def run (self ):
303+ run_start_time = datetime .now (timezone .utc )
304+ logger .info (
305+ f"[CELERY_EXEC] CoprBuildEndHandler execution started for "
306+ f"build_id={ self .copr_event .build_id } "
307+ f"chroot={ self .copr_event .chroot } "
308+ f"at { run_start_time .isoformat ()} "
309+ )
288310 if not self .build :
289311 # TODO: how could this happen?
290312 model = "SRPMBuildDB" if self .copr_event .chroot == COPR_SRPM_CHROOT else "CoprBuildDB"
@@ -338,6 +360,7 @@ def run(self):
338360 logs_url = self .build .build_logs_url ,
339361 )
340362 self .build .set_status (BuildStatus .failure )
363+ report_long_runtime ("Copr build failed end" , 120 , run_start_time )
341364 return TaskResults (success = False , details = {"msg" : failed_msg })
342365
343366 self .report_successful_build ()
@@ -365,6 +388,7 @@ def run(self):
365388 f"as this is only experimental functionality for now." ,
366389 )
367390
391+ report_long_runtime ("Copr build end" , 120 , run_start_time )
368392 return TaskResults (success = True , details = {})
369393
370394 def report_successful_build (self ):
0 commit comments