diff --git a/apps/clustering/__init__.py b/apps/clustering/__init__.py index 011a7e3c6f..8f271eb50b 100644 --- a/apps/clustering/__init__.py +++ b/apps/clustering/__init__.py @@ -8,7 +8,7 @@ from navigation.api import bind_links from project_tools.api import register_tool from project_setup.api import register_setup -from .tasks import node_heartbeat, house_keeping +from .tasks import send_heartbeat, house_keeping from .links import tool_link, node_list, clustering_config_edit, setup_link from .models import Node, ClusteringConfig @@ -17,7 +17,7 @@ ClusteringConfig() def add_clustering_jobs(): clustering_scheduler = LocalScheduler('clustering', _(u'Clustering')) try: - clustering_scheduler.add_interval_job('node_heartbeat', _(u'Update a node\'s properties.'), node_heartbeat, seconds=ClusteringConfig.get().node_heartbeat_interval) + clustering_scheduler.add_interval_job('send_heartbeat', _(u'Update a node\'s properties.'), send_heartbeat, seconds=ClusteringConfig.get().node_heartbeat_interval) clustering_scheduler.add_interval_job('house_keeping', _(u'Check for unresponsive nodes in the cluster list.'), house_keeping, seconds=ClusteringConfig.get().dead_node_removal_interval) except DatabaseError: transaction.rollback() diff --git a/apps/clustering/signals.py b/apps/clustering/signals.py index 14661d9e12..5100d4332e 100644 --- a/apps/clustering/signals.py +++ b/apps/clustering/signals.py @@ -1,3 +1,4 @@ from django.dispatch import Signal node_died = Signal(providing_args=['node']) +node_heartbeat = Signal(providing_args=['node']) diff --git a/apps/clustering/tasks.py b/apps/clustering/tasks.py index a7cb95a2fb..1de712fa7a 100644 --- a/apps/clustering/tasks.py +++ b/apps/clustering/tasks.py @@ -5,6 +5,7 @@ import logging from lock_manager.decorators import simple_locking from .models import Node, ClusteringConfig +from .signals import node_heartbeat LOCK_EXPIRE = 10 @@ -12,10 +13,11 @@ logger = logging.getLogger(__name__) @simple_locking('node_heartbeat', 10) -def node_heartbeat(): +def send_heartbeat(): logger.debug('starting') node = Node.objects.myself() node.send_heartbeat() + node_heartbeat.send(sender=node, node=node) @simple_locking('house_keeping', 10)