From d21cf1fdd38e5b004a0fa17b3a4f224f6bd4d31e Mon Sep 17 00:00:00 2001 From: Udith Indrakantha <45740208+Udith-Gayan@users.noreply.github.com> Date: Thu, 7 Jul 2022 12:16:25 +0530 Subject: [PATCH] A flag added to check if a haertbeat is ongoing (#154) --- mb-xrpl/lib/message-board.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mb-xrpl/lib/message-board.js b/mb-xrpl/lib/message-board.js index c65cfb0..17530c9 100644 --- a/mb-xrpl/lib/message-board.js +++ b/mb-xrpl/lib/message-board.js @@ -73,6 +73,7 @@ class MessageBoard { await this.hostClient.updateRegInfo(this.activeInstanceCount, this.cfg.version); this.db.close(); + let ongoingHeartbeat = false; // Check for instance expiry. this.xrplApi.on(evernode.XrplApiEvents.LEDGER, async (e) => { this.lastValidatedLedgerIndex = e.ledger_index; @@ -80,9 +81,10 @@ class MessageBoard { const currentMoment = await this.hostClient.getMoment(e.ledger_index); // Sending heartbeat every CONF_HOST_HEARTBEAT_FREQ moments. - if (this.lastHeartbeatMoment === 0 || (currentMoment % this.hostClient.config.hostHeartbeatFreq === 0 && currentMoment !== this.lastHeartbeatMoment)) { - - console.log(`Reporting heartbeat at Moment ${this.lastHeartbeatMoment}...`) + if ( ! ongoingHeartbeat && + (this.lastHeartbeatMoment === 0 || (currentMoment % this.hostClient.config.hostHeartbeatFreq === 0 && currentMoment !== this.lastHeartbeatMoment))) { + ongoingHeartbeat = true; + console.log(`Reporting heartbeat at Moment ${this.lastHeartbeatMoment}...`); try { await this.hostClient.heartbeat(); @@ -94,6 +96,9 @@ class MessageBoard { else console.log("Heartbeat tx error", err); } + finally { + ongoingHeartbeat = false; + } } // Filter out instances which needed to be expired and destroy them.