From 12fc479da12af2181e751fce1e6e75dbe75b9162 Mon Sep 17 00:00:00 2001
From: David Hammer <dhammer@mailbox.org>
Date: Fri, 1 Apr 2022 18:22:52 +0200
Subject: [PATCH] For Karabo 2.14.x: increase instantiation timeout, gather for
 speed

---
 src/calng/CalibrationManager.py | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/calng/CalibrationManager.py b/src/calng/CalibrationManager.py
index 9fdeb9e8..83ee3070 100644
--- a/src/calng/CalibrationManager.py
+++ b/src/calng/CalibrationManager.py
@@ -1151,7 +1151,7 @@ class CalibrationManager(DeviceClientBase, Device):
 
         try:
             msg = await wait_for(instantiate(
-                server, class_id, device_id, config), 5.0)
+                server, class_id, device_id, config), 20.0)
         except AsyncTimeoutError:
             self._set_error(f'Instantiation timeout on {device_id}')
             return False
@@ -1210,6 +1210,7 @@ class CalibrationManager(DeviceClientBase, Device):
         correct_device_id_by_module = {}
         input_source_by_module = {}
 
+        awaitables = []
         for index, row in enumerate(self.modules.value):
             vname, group, aggregator, input_channel, input_source = row
 
@@ -1245,11 +1246,13 @@ class CalibrationManager(DeviceClientBase, Device):
                 if not ismethod(value):
                     config[key] = value
 
-            if not await self._instantiate_device(
-                server_by_group[group], class_ids['correction'], device_id,
-                config
-            ):
-                return
+            awaitables.append(self._instantiate_device(
+                server_by_group[group],
+                class_ids['correction'],
+                device_id,
+                config))
+        await gather(*awaitables)
+        awaitables.clear()
 
         # Instantiate group matchers which can also be bridges.
         for row in self.moduleGroups.value:
@@ -1307,10 +1310,11 @@ class CalibrationManager(DeviceClientBase, Device):
             config['geometryDevice'] = self.geometryDevice.value
             config['maxIdle'] = self.maxIdle.value
 
-            if not await self._instantiate_device(
-                server, class_ids['assembler'], assembler_device_id, config
-            ):
-                return
+            awaitables.append(self._instantiate_device(
+                server, class_ids['assembler'], assembler_device_id, config))
+
+        await gather(*awaitables)
+        awaitables.clear()
 
         self._set_status('All devices instantiated')
         self.state = State.ACTIVE
-- 
GitLab