From 1fcd62f2e59fd5e951fbde8cf7c1eebab00a17f8 Mon Sep 17 00:00:00 2001 From: sairajzero Date: Fri, 18 Feb 2022 00:11:55 +0530 Subject: [PATCH] Slave: wait before sync on master-change When Update master event occurs, master needs time to sync its missing data, so slaves should sync only after BACKUP_INTERVAL --- src/backup/head.js | 6 +++--- src/backup/slave.js | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backup/head.js b/src/backup/head.js index 6c70666..433d6bf 100644 --- a/src/backup/head.js +++ b/src/backup/head.js @@ -154,7 +154,7 @@ function connectToMaster(i = 0, init = false) { connectWS(floID).then(ws => { ws.floID = floID; ws.onclose = () => connectToMaster(i); - serveAsSlave(ws); + serveAsSlave(ws, init); }).catch(error => { console.log(`Node(${floID}) is offline`); connectToMaster(i + 1, init) @@ -170,10 +170,10 @@ function serveAsMaster(init) { app.resume(); } -function serveAsSlave(ws) { +function serveAsSlave(ws, init) { console.debug('Starting slave process'); app.pause(); - slave.start(ws); + slave.start(ws, init); mod = SLAVE_MODE; } diff --git a/src/backup/slave.js b/src/backup/slave.js index d788119..0a1e253 100644 --- a/src/backup/slave.js +++ b/src/backup/slave.js @@ -13,7 +13,7 @@ var masterWS = null; //Container for Master websocket connection var intervalID = null; -function startSlaveProcess(ws) { +function startSlaveProcess(ws, init) { if (!ws) throw Error("Master WS connection required"); //stop existing process stopSlaveProcess(); @@ -30,7 +30,8 @@ function startSlaveProcess(ws) { message.sign = floCrypto.signData(message.type + "|" + message.req_time, global.myPrivKey); ws.send(JSON.stringify(message)); //start sync - requestInstance.open(); + if (init) + requestInstance.open(); intervalID = setInterval(() => requestInstance.open(), BACKUP_INTERVAL); }