File tree Expand file tree Collapse file tree 1 file changed +8
-3
lines changed
lib/private/TaskProcessing Expand file tree Collapse file tree 1 file changed +8
-3
lines changed Original file line number Diff line number Diff line change @@ -80,6 +80,7 @@ class Manager implements IManager {
80
80
81
81
private IAppData $ appData ;
82
82
private ?array $ preferences = null ;
83
+ private ?array $ providersById = null ;
83
84
private ICache $ cache ;
84
85
private ICache $ distributedCache ;
85
86
@@ -744,9 +745,13 @@ public function getPreferredProvider(string $taskTypeId) {
744
745
745
746
$ providers = $ this ->getProviders ();
746
747
if (isset ($ this ->preferences [$ taskTypeId ])) {
747
- $ provider = current (array_values (array_filter ($ providers , fn ($ provider ) => $ provider ->getId () === $ this ->preferences [$ taskTypeId ])));
748
- if ($ provider !== false ) {
749
- return $ provider ;
748
+ $ providersById = $ this ->providersById ?? array_reduce ($ providers , static function (array $ carry , IProvider $ provider ) {
749
+ $ carry [$ provider ->getId ()] = $ provider ;
750
+ return $ carry ;
751
+ }, []);
752
+ $ this ->providersById = $ providersById ;
753
+ if (isset ($ providersById [$ this ->preferences [$ taskTypeId ]])) {
754
+ return $ providersById [$ this ->preferences [$ taskTypeId ]];
750
755
}
751
756
}
752
757
// By default, use the first available provider
You can’t perform that action at this time.
0 commit comments