diff --git a/backend/app.js b/backend/app.js index 95aeb65..037ba24 100644 --- a/backend/app.js +++ b/backend/app.js @@ -65,9 +65,9 @@ if (process.env.ZU_LAST_SEEN_FETCH !== "false") { cron.schedule(schedule, () => { console.debug("Running scheduled job"); const networks = db.get("networks").value(); - networks.forEach((network) => { - console.debug("Processing " + network.id); - pingAll(network); + networks.forEach(async (network) => { + console.debug("Processing network " + network.id); + await pingAll(network); }); }); } diff --git a/backend/utils/ping.js b/backend/utils/ping.js index 0f37589..218107f 100644 --- a/backend/utils/ping.js +++ b/backend/utils/ping.js @@ -1,22 +1,26 @@ +const _ = require("lodash"); + const api = require("./controller-api"); const db = require("./db"); async function pingAll(network) { await Promise.all( network.members.map(async (member) => { - console.debug("Processing " + member.id); + console.debug("Processing member " + member.id); api .get("peer/" + member.id) - .then(async function () { - // write lastOneline field in db - db.get("networks") - .filter({ id: network.id }) - .map("members") - .first() - .filter({ id: member.id }) - .first() - .set("lastOnline", new Date().getTime()) - .write(); + .then(function (controllerResp) { + if (!_.isEmpty(controllerResp.data)) { + // write lastOnline field in db + db.get("networks") + .filter({ id: network.id }) + .map("members") + .first() + .filter({ id: member.id }) + .first() + .set("lastOnline", new Date().getTime()) + .write(); + } }) .catch(function (err) { console.debug("Couldn't fetch", member.id);