Merge ~adam-collard/maas:middleware-speedup into maas:master

Proposed by Adam Collard
Status: Merged
Approved by: Adam Collard
Approved revision: f8c2e6cf32a1b46ef532f5913995f07afea3eac9
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~adam-collard/maas:middleware-speedup
Merge into: maas:master
Diff against target: 35 lines (+6/-9)
1 file modified
src/maasserver/middleware.py (+6/-9)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Christian Grabowski Approve
Review via email: mp+408027@code.launchpad.net

Commit message

Speed up middleware detecting disconnected controllers

Description of the change

By avoiding materialising all of the RackControllers, locally I see improvements on the time to run the tests:

https://paste.ubuntu.com/p/3gykFxgQMC/

To post a comment you must log in.
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

Nice fix!

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b middleware-speedup lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: f8c2e6cf32a1b46ef532f5913995f07afea3eac9

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/middleware.py b/src/maasserver/middleware.py
2index fb83acd..0db67ee 100644
3--- a/src/maasserver/middleware.py
4+++ b/src/maasserver/middleware.py
5@@ -121,24 +121,21 @@ class ExternalComponentsMiddleware:
6
7 If any rack controllers are disconnected, add a persistent error.
8 """
9- controllers = RackController.objects.all()
10 connected_ids = {client.ident for client in getAllClients()}
11- disconnected_controllers = {
12- controller
13- for controller in controllers
14- if controller.system_id not in connected_ids
15- }
16- if len(disconnected_controllers) == 0:
17+ n_disconnected_controllers = RackController.objects.exclude(
18+ system_id__in=connected_ids
19+ ).count()
20+ if n_disconnected_controllers == 0:
21 discard_persistent_error(COMPONENT.RACK_CONTROLLERS)
22 else:
23- if len(disconnected_controllers) == 1:
24+ if n_disconnected_controllers == 1:
25 message = (
26 "One rack controller is not yet connected to the region"
27 )
28 else:
29 message = (
30 "%d rack controllers are not yet connected to the region"
31- % len(disconnected_controllers)
32+ % n_disconnected_controllers
33 )
34 message = (
35 '%s. Visit the <a href="/MAAS/l/controllers">'

Subscribers

People subscribed via source and target branches