woocommerce / woocommerce-ios

WooCommerce iOS app
https://www.woocommerce.com/mobile
GNU General Public License v2.0
262 stars 106 forks source link

Fix thread warnings #12536

Open itsmeichigo opened 2 months ago

itsmeichigo commented 2 months ago

The use of WaitingTimeTracker in StorePerformanceViewModel and TopPerformersDashboardViewModel causes warnings about priority inversion:

Thread Performance Checker: Thread running at User-interactive quality-of-service class waiting on a lower QoS thread running at Default quality-of-service class. Investigate ways to avoid priority inversions
PID: 24696, TID: 4019461
Backtrace
=================================================================
3   CoreData                            0x00000001864b4a88 -[NSSQLDefaultConnectionManager _checkoutConnectionOfType:] + 72
4   CoreData                            0x00000001864b4c78 -[NSSQLDefaultConnectionManager handleStoreRequest:] + 48
5   CoreData                            0x00000001865f29f4 -[NSSQLCoreDispatchManager routeStoreRequest:] + 220
6   CoreData                            0x00000001864fa280 -[NSSQLCore dispatchRequest:withRetries:] + 168
7   CoreData                            0x00000001864fc9e4 -[NSSQLCore executeRequest:withContext:error:] + 2116
8   CoreData                            0x00000001864c6a84 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke.383 + 9184
9   CoreData                            0x00000001864bbac4 -[NSPersistentStoreCoordinator _routeHeavyweightBlock:] + 216
10  CoreData                            0x00000001864c3ec8 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 1100
11  CoreData                            0x000000018647c8f8 -[NSManagedObjectContext save:] + 968
12  AutomatticTracks                    0x0000000107bf8c58 -[TracksEventPersistenceService saveManagedObjectContext] + 76
13  AutomatticTracks                    0x0000000107bf7a30 __52-[TracksEventPersistenceService persistTracksEvent:]_block_invoke + 72
14  CoreData                            0x000000018648584c developerSubmittedBlockToNSManagedObjectContextPerform + 156
15  libdispatch.dylib                   0x00000001093e573c _dispatch_client_callout + 16
16  libdispatch.dylib                   0x00000001093f648c _dispatch_lane_barrier_sync_invoke_and_complete + 144
17  CoreData                            0x0000000186485758 -[NSManagedObjectContext performBlockAndWait:] + 260
18  AutomatticTracks                    0x0000000107bf79b0 -[TracksEventPersistenceService persistTracksEvent:] + 196
19  AutomatticTracks                    0x0000000107bf9490 -[TracksEventService createTracksEventWithName:username:userID:userAgent:userType:eventDate:customProperties:deviceProperties:userProperties:] + 708
20  AutomatticTracks                    0x0000000107bfa4ac -[TracksService trackEventName:withCustomProperties:] + 464
21  WooCommerce                         0x00000001013cc6e8 $s11WooCommerce14TracksProviderC5track_14withPropertiesySS_SDys11AnyHashableVypGSgtF + 280
22  WooCommerce                         0x00000001013cc5c4 $s11WooCommerce14TracksProviderCAA09AnalyticsD0A2aDP5track_14withPropertiesySS_SDys11AnyHashableVypGSgtFTW + 20
23  WooCommerce                         0x000000010244e010 $s11WooCommerce0A9AnalyticsC5track_10properties5erroryAA0aC4StatO_SDys11AnyHashableVypGSgs5Error_pSgtF + 308
24  WooCommerce                         0x000000010244ded0 $s11WooCommerce0A9AnalyticsCAA0C0A2aDP5track_10properties5erroryAA0aC4StatO_SDys11AnyHashableVypGSgs5Error_pSgtFTW + 20
25  WooCommerce                         0x00000001022b0314 $s11WooCommerce9AnalyticsPAAE5track5eventyAA0aC5EventV_tF + 200
26  WooCommerce                         0x000000010260a4e4 $s11WooCommerce18WaitingTimeTrackerC3endyyF + 212
27  WooCommerce                         0x00000001014cd1e4 $s11WooCommerce31TopPerformersDashboardViewModelC04syncC12EarnersStats33_E326410AB5F997574714ADECAE9C942BLLyyYaKFyScCyyts5Error_pGXEfU_ys6ResultOy10Networking0c6EarnerJ0VsAF_pGcfU_ + 76
28  Yosemite                            0x000000010b228c88 $s8Yosemite12StatsStoreV4C017retrieveTopEarnerB033_B88F7F6EF90D88405A6DDDC84E0EE525LL6siteID9timeRange0S4Zone21earliestDateToInclude06latestwxY08quantity12forceRefresh13saveInStorage12onCompletionys5Int64V_AA0b4TimetD0O10Foundation04TimeU0VAS0W0VAWSiS2bys6ResultOy10Networking0fgB0Vs5Error_pGctFyyYaYbcfU_TY1_ + 624
29  libswift_Concurrency.dylib          0x00000002099fd10c _ZN5swift34runJobInEstablishedExecutorContextEPNS_3JobE + 324
30  libswift_Concurrency.dylib          0x00000002099fdfd4 _ZL17swift_job_runImplPN5swift3JobENS_11ExecutorRefE + 80
31  libdispatch.dylib                   0x00000001093f52a8 _dispatch_main_queue_drain + 892
32  libdispatch.dylib                   0x00000001093f4f1c _dispatch_main_queue_callback_4CF + 40
33  CoreFoundation                      0x000000018040e9a0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
34  CoreFoundation                      0x00000001804090b8 __CFRunLoopRun + 1936
35  CoreFoundation                      0x0000000180408514 CFRunLoopRunSpecific + 572
36  GraphicsServices                    0x000000018ef06ae4 GSEventRunModal + 160
37  UIKitCore                           0x00000001853e8040 -[UIApplication _run] + 868
38  UIKitCore                           0x00000001853ebcc8 UIApplicationMain + 124
39  WooCommerce                         0x0000000101b9738c main + 540
dangermattic commented 2 months ago

🚫 Please add a type label (e.g. type: enhancement) and a feature label (e.g. feature: stats) to this issue.

itsmeichigo commented 3 weeks ago

More warnings found:

Blaze campaign dashboard view model:

Thread Performance Checker: Thread running at User-interactive quality-of-service class waiting on a lower QoS thread running at Default quality-of-service class. Investigate ways to avoid priority inversions
PID: 31775, TID: 10822643
Backtrace
=================================================================
3   CoreData                            0x00000001864b4a88 -[NSSQLDefaultConnectionManager _checkoutConnectionOfType:] + 72
4   CoreData                            0x00000001864b4c78 -[NSSQLDefaultConnectionManager handleStoreRequest:] + 48
5   CoreData                            0x00000001865f29f4 -[NSSQLCoreDispatchManager routeStoreRequest:] + 220
6   CoreData                            0x00000001864fa280 -[NSSQLCore dispatchRequest:withRetries:] + 168
7   CoreData                            0x00000001864fc9e4 -[NSSQLCore executeRequest:withContext:error:] + 2116
8   CoreData                            0x00000001864c6a84 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke.383 + 9184
9   CoreData                            0x00000001864bbac4 -[NSPersistentStoreCoordinator _routeHeavyweightBlock:] + 216
10  CoreData                            0x00000001864c3ec8 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 1100
11  CoreData                            0x000000018647c8f8 -[NSManagedObjectContext save:] + 968
12  AutomatticTracks                    0x0000000109500c58 -[TracksEventPersistenceService saveManagedObjectContext] + 76
13  AutomatticTracks                    0x00000001094ffa30 __52-[TracksEventPersistenceService persistTracksEvent:]_block_invoke + 72
14  CoreData                            0x000000018648584c developerSubmittedBlockToNSManagedObjectContextPerform + 156
15  libdispatch.dylib                   0x000000010ad4573c _dispatch_client_callout + 16
16  libdispatch.dylib                   0x000000010ad5648c _dispatch_lane_barrier_sync_invoke_and_complete + 144
17  CoreData                            0x0000000186485758 -[NSManagedObjectContext performBlockAndWait:] + 260
18  AutomatticTracks                    0x00000001094ff9b0 -[TracksEventPersistenceService persistTracksEvent:] + 196
19  AutomatticTracks                    0x0000000109501490 -[TracksEventService createTracksEventWithName:username:userID:userAgent:userType:eventDate:customProperties:deviceProperties:userProperties:] + 708
20  AutomatticTracks                    0x00000001095024ac -[TracksService trackEventName:withCustomProperties:] + 464
21  WooCommerce                         0x00000001030e24b0 $s11WooCommerce14TracksProviderC5track_14withPropertiesySS_SDys11AnyHashableVypGSgtF + 280
22  WooCommerce                         0x00000001030e238c $s11WooCommerce14TracksProviderC0A10Foundation09AnalyticsD0AadEP5track_14withPropertiesySS_SDys11AnyHashableVypGSgtFTW + 20
23  WooCommerce                         0x0000000104179438 $s11WooCommerce0A9AnalyticsC5track_10properties5errorySS_SDys11AnyHashableVypGSgs5Error_pSgtF + 344
24  WooCommerce                         0x00000001041792d4 $s11WooCommerce0A9AnalyticsC0A10Foundation0C0AadEP5track_10properties5errorySS_SDys11AnyHashableVypGSgs5Error_pSgtFTW + 20
25  WooCommerce                         0x000000010417a6ac $s13WooFoundation9AnalyticsP0A8CommerceE5track_10properties5erroryAD0aC4StatO_SDys11AnyHashableVypGSgs5Error_pSgtF + 308
26  WooCommerce                         0x000000010417a554 $s13WooFoundation9AnalyticsP0A8CommerceE5track5eventyAD0aC5EventV_tF + 196
27  WooCommerce                         0x0000000102c640d0 $s11WooCommerce31BlazeCampaignDashboardViewModelC24observeSectionVisibility33_1C12F3CA903C999737B8A49F7A004AFBLLyyFySbcfU1_ + 256
28  Combine                             0x00000001b7de3208 $s7Combine11SubscribersO4SinkC7receiveyAC6DemandVxF + 84
29  Combine                             0x00000001b7de381c $s7Combine11SubscribersO4SinkCy_xq_GAA10SubscriberA2aGP7receiveyAC6DemandV5InputQzFTW + 20
30  Combine                             0x00000001b7dd5b1c $s7Combine14FilterProducerC7receiveyAA11SubscribersO6DemandVq_F + 1616
31  Combine                             0x00000001b7dd647c $s7Combine14FilterProducerCyxq_q0_q1_q2_GAA10SubscriberA2aEP7receiveyAA11SubscribersO6DemandV5InputQzFTW + 20
32  Combine                             0x00000001b7e6e8bc $s7Combine10PublishersO3MapV5Inner33_5A6CD15A64659A6248DAF677D4BB6188LLV7receiveyAA11SubscribersO6DemandV6OutputQzF + 104
33  Combine                             0x00000001b7dec610 $s7Combine16PublishedSubjectC7ConduitC5offeryyxF + 428
34  Combine                             0x00000001b7ded21c $s7Combine16PublishedSubjectC4sendyyxFyAA11ConduitBaseCyxs5NeverOGXEfU_TA + 40
35  Combine                             0x00000001b7e23638 $s7Combine11ConduitListO7forEachyyyAA0B4BaseCyxq_GKXEKF + 212
36  Combine                             0x00000001b7dec19c $s7Combine16PublishedSubjectC4sendyyxF + 196
37  Combine                             0x00000001b7e0b040 $s7Combine9PublishedV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAHyqd__ACyxGGtcRld__CluisZ + 256
38  WooCommerce                         0x0000000102c5dff4 $s11WooCommerce31BlazeCampaignDashboardViewModelC5stateAC5StateOvs + 180
39  WooCommerce                         0x0000000102c61a0c $s11WooCommerce31BlazeCampaignDashboardViewModelC6update33_1C12F3CA903C999737B8A49F7A004AFBLL5stateyAC5StateO_tF + 140
40  WooCommerce                         0x0000000102c6283c $s11WooCommerce31BlazeCampaignDashboardViewModelC13updateResults33_1C12F3CA903C999737B8A49F7A004AFBLLyyF + 1864
41  WooCommerce                         0x0000000102c63da0 $s11WooCommerce31BlazeCampaignDashboardViewModelC26configureResultsController33_1C12F3CA903C999737B8A49F7A004AFBLLyyFyycfU1_ + 152
42  Yosemite                            0x000000010d015724 $s8Yosemite17ResultsControllerC21setupEventsForwarding33_859B47074559A83DD5AD581E243E51FELLyyFyycfU0_ + 268
43  Yosemite                            0x000000010d02c0f4 $s8Yosemite39FetchedResultsControllerDelegateWrapperC26controllerDidChangeContentyySo09NSFetchedcD0CySo20NSFetchRequestResult_pGF + 140
44  Yosemite                            0x000000010d02c150 $s8Yosemite39FetchedResultsControllerDelegateWrapperC26controllerDidChangeContentyySo09NSFetchedcD0CySo20NSFetchRequestResult_pGFTo + 52
45  CoreData                            0x00000001864e6604 __82-[NSFetchedResultsController(PrivateMethods) _core_managedObjectContextDidChange:]_block_invoke + 5516
46  CoreData                            0x000000018648584c developerSubmittedBlockToNSManagedObjectContextPerform + 156
47  CoreData                            0x0000000186485728 -[NSManagedObjectContext performBlockAndWait:] + 212
48  CoreData                            0x00000001864e505c -[NSFetchedResultsController _core_managedObjectContextDidChange:] + 96
49  CoreFoundation                      0x00000001803de7e8 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 140
50  CoreFoundation                      0x00000001803de70c ___CFXRegistrationPost_block_invoke + 84
51  CoreFoundation                      0x00000001803ddbfc _CFXRegistrationPost + 404
52  CoreFoundation                      0x00000001803dd5d8 _CFXNotificationPost + 688
53  Foundation                          0x0000000180da1994 -[NSNotificationCenter postNotificationName:object:userInfo:] + 88
54  CoreData                            0x0000000186478818 -[NSManagedObjectContext _postObjectsDidChangeNotificationWithUserInfo:] + 320
55  CoreData                            0x000000018648b00c -[NSManagedObjectContext _createAndPostChangeNotification:deletions:updates:refreshes:deferrals:wasMerge:] + 1244
56  CoreData                            0x000000018647a560 -[NSManagedObjectContext _processRecentChanges:] + 2884
57  CoreData                            0x000000018648fa10 -[NSManagedObjectContext _parentProcessSaveRequest:inContext:error:] + 1088
58  CoreData                            0x000000018648ff68 __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke + 460
59  CoreData                            0x0000000186491ef8 internalBlockToNSManagedObjectContextPerform + 104
60  libdispatch.dylib                   0x000000010ad4573c _dispatch_client_callout + 16
61  libdispatch.dylib                   0x000000010ad56624 _dispatch_async_and_wait_invoke + 192
62  libdispatch.dylib                   0x000000010ad4573c _dispatch_client_callout + 16
63  libdispatch.dylib                   0x000000010ad553f8 _dispatch_main_queue_drain + 1228
64  libdispatch.dylib                   0x000000010ad54f1c _dispatch_main_queue_callback_4CF + 40
65  CoreFoundation                      0x000000018040e9a0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
66  CoreFoundation                      0x00000001804090b8 __CFRunLoopRun + 1936
67  CoreFoundation                      0x0000000180408514 CFRunLoopRunSpecific + 572
68  GraphicsServices                    0x000000018ef06ae4 GSEventRunModal + 160
69  UIKitCore                           0x00000001853e8040 -[UIApplication _run] + 868
70  UIKitCore                           0x00000001853ebcc8 UIApplicationMain + 124
71  WooCommerce                         0x00000001038c8114 main + 540

Card present payment onboarding view model:

Tracks <V>: TracksService sendQueuedEvents completed. Sent 1 events.
Thread Performance Checker: Thread running at User-interactive quality-of-service class waiting on a lower QoS thread running at Default quality-of-service class. Investigate ways to avoid priority inversions
PID: 53490, TID: 7440089
Backtrace
=================================================================
3   CoreData                            0x00000001864b4a88 -[NSSQLDefaultConnectionManager _checkoutConnectionOfType:] + 72
4   CoreData                            0x00000001864b4c78 -[NSSQLDefaultConnectionManager handleStoreRequest:] + 48
5   CoreData                            0x00000001865f29f4 -[NSSQLCoreDispatchManager routeStoreRequest:] + 220
6   CoreData                            0x00000001864fa280 -[NSSQLCore dispatchRequest:withRetries:] + 168
7   CoreData                            0x00000001864fc9e4 -[NSSQLCore executeRequest:withContext:error:] + 2116
8   CoreData                            0x00000001864c6a84 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke.383 + 9184
9   CoreData                            0x00000001864bbac4 -[NSPersistentStoreCoordinator _routeHeavyweightBlock:] + 216
10  CoreData                            0x00000001864c3ec8 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 1100
11  CoreData                            0x000000018647c8f8 -[NSManagedObjectContext save:] + 968
12  AutomatticTracks                    0x0000000108025e24 -[TracksEventPersistenceService saveManagedObjectContext] + 76
13  AutomatticTracks                    0x0000000108024bfc __52-[TracksEventPersistenceService persistTracksEvent:]_block_invoke + 72
14  CoreData                            0x000000018648584c developerSubmittedBlockToNSManagedObjectContextPerform + 156
15  libdispatch.dylib                   0x00000001098f173c _dispatch_client_callout + 16
16  libdispatch.dylib                   0x000000010990248c _dispatch_lane_barrier_sync_invoke_and_complete + 144
17  CoreData                            0x0000000186485758 -[NSManagedObjectContext performBlockAndWait:] + 260
18  AutomatticTracks                    0x0000000108024b7c -[TracksEventPersistenceService persistTracksEvent:] + 196
19  AutomatticTracks                    0x000000010802665c -[TracksEventService createTracksEventWithName:username:userID:userAgent:userType:eventDate:customProperties:deviceProperties:userProperties:] + 708
20  AutomatticTracks                    0x0000000108027678 -[TracksService trackEventName:withCustomProperties:] + 464
21  WooCommerce                         0x000000010144ac30 $s11WooCommerce14TracksProviderC5track_14withPropertiesySS_SDys11AnyHashableVypGSgtF + 280
22  WooCommerce                         0x000000010144ab0c $s11WooCommerce14TracksProviderC0A10Foundation09AnalyticsD0AadEP5track_14withPropertiesySS_SDys11AnyHashableVypGSgtFTW + 20
23  WooCommerce                         0x0000000102562c50 $s11WooCommerce0A9AnalyticsC5track_10properties5errorySS_SDys11AnyHashableVypGSgs5Error_pSgtF + 344
24  WooCommerce                         0x0000000102562aec $s11WooCommerce0A9AnalyticsC0A10Foundation0C0AadEP5track_10properties5errorySS_SDys11AnyHashableVypGSgs5Error_pSgtFTW + 20
25  WooCommerce                         0x0000000102563ec4 $s13WooFoundation9AnalyticsP0A8CommerceE5track_10properties5erroryAD0aC4StatO_SDys11AnyHashableVypGSgs5Error_pSgtF + 308
26  WooCommerce                         0x0000000102563d6c $s13WooFoundation9AnalyticsP0A8CommerceE5track5eventyAD0aC5EventV_tF + 196
27  WooCommerce                         0x0000000100f11740 $s11WooCommerce38CardPresentPaymentsOnboardingViewModelC10trackState33_5F6D462B6B01D374FE812259610FB172LLyy8Yosemite0cd7PaymentfJ0OF + 780
28  WooCommerce                         0x0000000100f11424 $s11WooCommerce38CardPresentPaymentsOnboardingViewModelC6stores18featureFlagService7useCase19didChangeShouldShowAC8Yosemite13StoresManager_p_11Experiments07FeaturekL0_pAA0cdef3UseN8Protocol_pyAA0C22ReaderSettingsTriStateOcSgtcfcyAH0cd7PaymentF5StateOcACcfu_yAQcfu0_ + 48
29  Combine                             0x00000001b7e64030 $s7Combine10PublishersO12HandleEventsV5Inner33_9464E9048FC4C9C669F954B681B5AD45LLC7receiveyAA11SubscribersO6DemandV6OutputQzF + 84
30  Combine                             0x00000001b7e64254 $s7Combine10PublishersO12HandleEventsV5Inner33_9464E9048FC4C9C669F954B681B5AD45LLCy_x_qd__GAA10SubscriberA2aJP7receiveyAA11SubscribersO6DemandV5InputQzFTW + 20
31  Combine                             0x00000001b7e64068 $s7Combine10PublishersO12HandleEventsV5Inner33_9464E9048FC4C9C669F954B681B5AD45LLC7receiveyAA11SubscribersO6DemandV6OutputQzF + 140
32  Combine                             0x00000001b7e64254 $s7Combine10PublishersO12HandleEventsV5Inner33_9464E9048FC4C9C669F954B681B5AD45LLCy_x_qd__GAA10SubscriberA2aJP7receiveyAA11SubscribersO6DemandV5InputQzFTW + 20
33  Combine                             0x00000001b7dd5b1c $s7Combine14FilterProducerC7receiveyAA11SubscribersO6DemandVq_F + 1616
34  Combine                             0x00000001b7dd647c $s7Combine14FilterProducerCyxq_q0_q1_q2_GAA10SubscriberA2aEP7receiveyAA11SubscribersO6DemandV5InputQzFTW + 20
35  Combine                             0x00000001b7e6aad4 $s7Combine10PublishersO8DebounceV5Inner33_D682D6D5FF38EFCA81E8F840E21F24F2LLC7receiveyAA11SubscribersO6DemandV5InputQyd__FyycfU_ + 2044
36  libswiftDispatch.dylib              0x00000001c500ee60 $sIeg_IeyB_TRTm + 28
37  libdispatch.dylib                   0x00000001098f173c _dispatch_client_callout + 16
38  libdispatch.dylib                   0x00000001098f4c14 _dispatch_continuation_pop + 756
39  libdispatch.dylib                   0x000000010990a4e0 _dispatch_source_invoke + 1736
40  libdispatch.dylib                   0x00000001099012a8 _dispatch_main_queue_drain + 892
41  libdispatch.dylib                   0x0000000109900f1c _dispatch_main_queue_callback_4CF + 40
42  CoreFoundation                      0x000000018040e9a0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
43  CoreFoundation                      0x00000001804090b8 __CFRunLoopRun + 1936
44  CoreFoundation                      0x0000000180408514 CFRunLoopRunSpecific + 572
45  GraphicsServices                    0x000000018ef06ae4 GSEventRunModal + 160
46  UIKitCore                           0x00000001853e8040 -[UIApplication _run] + 868
47  UIKitCore                           0x00000001853ebcc8 UIApplicationMain + 124
48  WooCommerce                         0x0000000101c57ff4 main + 540