From 594b1b1520458b18fa0e488515c50bf4607959b7 Mon Sep 17 00:00:00 2001 From: "ChangBo Guo(gcb)" Date: Thu, 24 Mar 2016 20:33:50 +0800 Subject: [PATCH] Don't use 'updated_at' to check service's status Commit b9bae02af2168ad64d3b3d28c97c3853cee73272 introduced 'last_seen_up' to check service in Liberty. Nova use 'updated_at' to check that before Liberty. So we can remove legacy item now. Note: 'last_seen_up' may be null at the beginning. so we still need 'created_at' in this case. Change-Id: I5a273c294341027fba66a54a540182fc890522db --- nova/servicegroup/drivers/db.py | 4 +--- nova/tests/unit/servicegroup/test_db_servicegroup.py | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/nova/servicegroup/drivers/db.py b/nova/servicegroup/drivers/db.py index ff41ad0c4f49..63d94f461e14 100644 --- a/nova/servicegroup/drivers/db.py +++ b/nova/servicegroup/drivers/db.py @@ -57,10 +57,8 @@ class DbDriver(base.Driver): """Moved from nova.utils Check whether a service is up based on last heartbeat. """ - # Keep checking 'updated_at' if 'last_seen_up' isn't set. - # Should be able to use only 'last_seen_up' in the M release last_heartbeat = (service_ref.get('last_seen_up') or - service_ref['updated_at'] or service_ref['created_at']) + service_ref['created_at']) if isinstance(last_heartbeat, six.string_types): # NOTE(russellb) If this service_ref came in over rpc via # conductor, then the timestamp will be a string and needs to be diff --git a/nova/tests/unit/servicegroup/test_db_servicegroup.py b/nova/tests/unit/servicegroup/test_db_servicegroup.py index f2bc7d4b1c68..4c2810194502 100644 --- a/nova/tests/unit/servicegroup/test_db_servicegroup.py +++ b/nova/tests/unit/servicegroup/test_db_servicegroup.py @@ -64,6 +64,13 @@ class DBServiceGroupTestCase(test.NoDBTestCase): result = self.servicegroup_api.service_is_up(service) self.assertFalse(result) + # "last_seen_up" is none before compute node reports its status, + # just use 'created_at' as last_heartbeat. + service.last_seen_up = None + service.created_at = timeutils.utcnow() + result = self.servicegroup_api.service_is_up(service) + self.assertTrue(result) + def test_join(self): service = mock.MagicMock(report_interval=1)