sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #07071
[Merge] ~cgrabowski/maas:cleanup_rpc_disconnect_logging into maas:master
Christian Grabowski has proposed merging ~cgrabowski/maas:cleanup_rpc_disconnect_logging into maas:master.
Commit message:
only log that a Rack Controller has disconnected when all connections are gone
Requested reviews:
MAAS Maintainers (maas-maintainers)
For more details, see:
https://code.launchpad.net/~cgrabowski/maas/+git/maas/+merge/441113
--
Your team MAAS Maintainers is requested to review the proposed merge of ~cgrabowski/maas:cleanup_rpc_disconnect_logging into maas:master.
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..ac5acbd 100644
--- a/src/maasserver/rpc/tests/test_regionservice.py
+++ b/src/maasserver/rpc/tests/test_regionservice.py
@@ -971,6 +971,19 @@ 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