32
32
from crc .services .user_file_service import UserFileService
33
33
from crc .services .workflow_processor import WorkflowProcessor
34
34
35
+ import time
36
+
37
+
38
+ def time_it (method , last_time = None ):
39
+ now = time .time ()
40
+ if last_time :
41
+ app .logger .info (f"{ method } : Time since last time: { now - last_time } " )
42
+ else :
43
+ app .logger .info (f"{ method } : First time: { now } " )
44
+ return now
45
+
35
46
36
47
class StudyService (object ):
37
48
"""Provides common tools for working with a Study"""
@@ -572,13 +583,18 @@ def __delete_exempt_studies(self, exempt_studies):
572
583
573
584
@staticmethod
574
585
def __abandon_missing_studies (missing_studies , db_studies ):
586
+ last_time = time_it ('__abandon_missing_studies' )
587
+ app .logger .info ("loop through missing studies" )
575
588
for missing_study_id in missing_studies :
589
+ last_time = time_it ('__abandon_missing_studies' , last_time )
576
590
study = next ((s for s in db_studies if s .id == missing_study_id ), None )
577
591
if study and study .status != StudyStatus .abandoned :
592
+ app .logger .info ("add updtae event" )
578
593
study .status = StudyStatus .abandoned
579
594
StudyService .add_study_update_event (study ,
580
595
status = StudyStatus .abandoned ,
581
596
event_type = StudyEventType .automatic )
597
+ app .logger .info ("end loop through missing studies" )
582
598
583
599
def sync_with_protocol_builder_if_enabled (self , user , specs ):
584
600
"""Assures that the studies we have locally for the given user are
@@ -588,6 +604,7 @@ def sync_with_protocol_builder_if_enabled(self, user, specs):
588
604
589
605
app .logger .info ("The Protocol Builder is enabled. app.config['PB_ENABLED'] = " +
590
606
str (app .config ['PB_ENABLED' ]))
607
+ last_time = time_it ('sync_with_protocol_builder_if_enabled' )
591
608
592
609
# Get studies matching this user from Protocol Builder
593
610
if user :
@@ -596,19 +613,27 @@ def sync_with_protocol_builder_if_enabled(self, user, specs):
596
613
else :
597
614
pb_studies = []
598
615
616
+ last_time = time_it ('sync_with_protocol_builder_if_enabled' , last_time )
599
617
# Get studies from the database
600
618
db_studies = session .query (StudyModel ).filter_by (user_uid = user .uid ).all ()
601
619
602
620
# Update all studies from the protocol builder, create new studies as needed.
603
621
# Further assures that every active study (that does exist in the protocol builder)
604
622
# has a reference to every available workflow (though some may not have started yet)
623
+ last_time = time_it ('sync_with_protocol_builder_if_enabled' , last_time )
605
624
self .__process_pb_studies (pb_studies , db_studies , user , specs )
606
625
607
626
# Process studies in the DB that are no longer in Protocol Builder
627
+ last_time = time_it ('sync_with_protocol_builder_if_enabled' , last_time )
608
628
missing_studies , exempt_studies = \
609
629
self .__get_missing_and_exempt_studies (db_studies , pb_studies )
630
+ last_time = time_it ('sync_with_protocol_builder_if_enabled' , last_time )
610
631
self .__delete_exempt_studies (exempt_studies )
632
+ app .logger .info ("Before abandon missing studies" )
633
+ last_time = time_it ('sync_with_protocol_builder_if_enabled' , last_time )
611
634
self .__abandon_missing_studies (missing_studies , db_studies )
635
+ app .logger .info ("After abandon missing studies" )
636
+ time_it ('sync_with_protocol_builder_if_enabled' , last_time )
612
637
613
638
@staticmethod
614
639
def add_study_update_event (study , status , event_type , user_uid = None , comment = '' ):
0 commit comments