sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #08955
[Merge] ~alexsander-souza/maas:lp1998615_to_3_3 into maas:3.3
Alexsander de Souza has proposed merging ~alexsander-souza/maas:lp1998615_to_3_3 into maas:3.3.
Commit message:
only log that a Rack Controller has disconnected when all connections are gone
(cherry picked from commit 459972b5ca45f0f0534c8a58a603e2300163728f)
Requested reviews:
MAAS Maintainers (maas-maintainers)
Related bugs:
Bug #1998615 in MAAS: "Rack controller status flapping when "ClusterClient connection lost" messages in rackd.log"
https://bugs.launchpad.net/maas/+bug/1998615
For more details, see:
https://code.launchpad.net/~alexsander-souza/maas/+git/maas/+merge/444130
--
Your team MAAS Maintainers is requested to review the proposed merge of ~alexsander-souza/maas:lp1998615_to_3_3 into maas:3.3.
diff --git a/src/maasserver/rpc/regionservice.py b/src/maasserver/rpc/regionservice.py
index 16afafa..459c5b9 100644
--- a/src/maasserver/rpc/regionservice.py
+++ b/src/maasserver/rpc/regionservice.py
@@ -833,7 +833,8 @@ class RegionServer(Region):
log.err, "Failed to unregister the connection with the master."
)
self.factory.service._removeConnectionFor(self.ident, self)
- log.msg("Rack controller '%s' disconnected." % self.ident)
+ if self.factory.service.rack_controller_is_disconnected(self.ident):
+ log.msg("Rack controller '%s' disconnected." % self.ident)
super().connectionLost(reason)
@@ -985,6 +986,9 @@ class RegionService(service.Service):
self.waiters[ident].add(d)
return d
+ def rack_controller_is_disconnected(self, ident):
+ return len(self.connections[ident]) == 0
+
def _addConnectionFor(self, ident, connection):
"""Adds `connection` to the set of connections for `ident`.
diff --git a/src/maasserver/rpc/tests/test_regionservice.py b/src/maasserver/rpc/tests/test_regionservice.py
index f681620..48d44d3 100644
--- a/src/maasserver/rpc/tests/test_regionservice.py
+++ b/src/maasserver/rpc/tests/test_regionservice.py
@@ -971,6 +971,23 @@ class TestRegionService(MAASTestCase):
),
)
+ def test_rack_controller_is_disconnected_returns_True_with_no_connections(
+ self,
+ ):
+ service = RegionService(sentinel.ipcWorker)
+ rack_ident = factory.make_UUID()
+ self.assertTrue(service.rack_controller_is_disconnected(rack_ident))
+
+ def test_rack_controller_is_disconnected_returns_False_with_connections(
+ self,
+ ):
+ service = RegionService(sentinel.ipcWorker)
+ rack_ident = factory.make_UUID()
+ c1 = DummyConnection()
+ c2 = DummyConnection()
+ service.connections[rack_ident].update({c1, c2})
+ self.assertFalse(service.rack_controller_is_disconnected(rack_ident))
+
def test_addConnectionFor_adds_connection(self):
service = RegionService(sentinel.ipcWorker)
uuid = factory.make_UUID()
Follow ups