From a8cf19a7bc3990c7c1610197c3e0a2200b34a7ab Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Fri, 18 Feb 2011 20:33:54 +0000 Subject: [PATCH] Ensure heartbeat only started once and only for daemon job This commit was SVN r24416. --- orte/mca/sensor/heartbeat/sensor_heartbeat.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/orte/mca/sensor/heartbeat/sensor_heartbeat.c b/orte/mca/sensor/heartbeat/sensor_heartbeat.c index 31c729b183..329fe57324 100644 --- a/orte/mca/sensor/heartbeat/sensor_heartbeat.c +++ b/orte/mca/sensor/heartbeat/sensor_heartbeat.c @@ -74,6 +74,7 @@ static opal_event_t *send_ev = NULL, *check_ev = NULL; static struct timeval send_time, check_time; static orte_job_t *daemons; static orte_thread_ctl_t ctl; +static bool already_started; static int init(void) { @@ -84,6 +85,7 @@ static int init(void) ORTE_NAME_PRINT(ORTE_PROC_MY_NAME))); OBJ_CONSTRUCT(&ctl, orte_thread_ctl_t); + already_started = false; /* get the daemon job object */ if (NULL == (daemons = orte_get_job_data_object(ORTE_PROC_MY_NAME->jobid))) { @@ -154,6 +156,14 @@ static void setup_time(char *input, struct timeval *time) static void start(orte_jobid_t jobid) { + /* if this isn't my jobid, then don't start or we can + * confuse things + */ + if (already_started || ORTE_PROC_MY_NAME->jobid != jobid) { + return; + } + already_started = true; + /* only daemons send heartbeats */ if (ORTE_PROC_IS_DAEMON) { /* convert the send rate */ @@ -197,6 +207,8 @@ static void stop(orte_jobid_t jobid) free(check_ev); check_ev = NULL; } + already_started = false; + return; }