Bug #5874
closedUser story #5293: Add a 'changes only' compliance mode, only reporting changes on systems
User story #5576: Add a heartbeat feature that force agent to periodically contact Rudder
User story #5579: Send reports from the agent to provide a heartbeat
Start message from system techniques is sometimes not printed due to over-zealous locking
Description
Our reporting system relies on a pair of messages (startRun/endRun) at the beginning/end of each run to be sent.
Since #5579, we changed the way the startRun message is called, to make it optional for the "changes only" reporting mode from #5293. This now involves an intermediate methods promise to call it:
168 methods: 169 # Should we send a message stating this agent is starting up? 170 # Always do it in "full_compliance" mode 171 # In other modes, only do it here if we need to send it as a "heartbeat", that is if it hasn't already been sent recently enough 172 full_compliance|!heartbeat_sent:: 173 "Send start message" usebundle => startExecution;
However since this promise doesn't contain any run-unique information (like the timestamp the actual report contains), this gets subjected to the default locks. But the endRun report does not, since the bundle is run directly from the bundlesequence. This results in outputs lacking the startRun message.
This is easily fixed by using "action => immediate" on the methods promises that call startExecution.