diff --git a/CHANGELOG.md b/CHANGELOG.md index 579eff94..e2b8da0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,7 +29,7 @@ _This release is scheduled to be released on 2025-01-01._ ### Fixed -- [updatenotification] Fix pm2 using detection when pm2 script is inside or outside MagicMirror root folder (#3576) (#3605) +- [updatenotification] Fix pm2 using detection when pm2 script is inside or outside MagicMirror root folder (#3576) (#3605) (#3626) - [core] Fix loading node_helper of modules: avoid black screen, display errors and continue loading with next module (#3578) - [weather] Changed default value for weatherEndpoint of provider openweathermap to "/onecall" (#3574) - [tests] Fix electron tests with mock dates, the mock on server side was missing (#3597) diff --git a/modules/default/updatenotification/update_helper.js b/modules/default/updatenotification/update_helper.js index cc6f2b0a..89e8ddf7 100644 --- a/modules/default/updatenotification/update_helper.js +++ b/modules/default/updatenotification/update_helper.js @@ -1,7 +1,7 @@ const Exec = require("node:child_process").exec; const Spawn = require("node:child_process").spawn; const fs = require("node:fs"); - +const pm2 = require("pm2"); const Log = require("logger"); /* @@ -142,7 +142,6 @@ class Updater { // restart MagicMiror with "pm2" pm2Restart () { Log.info("updatenotification: PM2 will restarting MagicMirror..."); - const pm2 = require("pm2"); pm2.restart(this.PM2, (err, proc) => { if (err) { Log.error("updatenotification:[PM2] restart Error", err); @@ -171,7 +170,15 @@ class Updater { return; } - const pm2 = require("pm2"); + if (process.env.unique_id === undefined) { + Log.info("updatenotification: [PM2] You are not using pm2"); + this.usePM2 = false; + resolve(false); + return; + } + + Log.debug(`updatenotification: [PM2] Search for pm2 id: ${process.env.pm_id} -- name: ${process.env.name} -- unique_id: ${process.env.unique_id}`); + pm2.connect((err) => { if (err) { Log.error("updatenotification: [PM2]", err); @@ -187,13 +194,14 @@ class Updater { return; } list.forEach((pm) => { - Log.debug(`[PM2] pm2 name: ${pm.name} -- in process env: ${process.env.name}`) - Log.debug(`[PM2] pm2 pm_id: ${pm.pm_id} -- in process env: ${process.env.pm_id}`) - if (pm.pm2_env.status === "online" && process.env.name === pm.name && +process.env.pm_id === +pm.pm_id) { - this.PM2 = pm.name; + Log.debug(`updatenotification: [PM2] found pm2 process id: ${pm.pm_id} -- name: ${pm.name} -- unique_id: ${pm.pm2_env.unique_id}`); + if (pm.pm2_env.status === "online" && process.env.name === pm.name && +process.env.pm_id === +pm.pm_id && process.env.unique_id === pm.pm2_env.unique_id) { + this.PM2 = pm.pm_id; this.usePM2 = true; - Log.info("updatenotification: [PM2] You are using pm2 with", this.PM2); + Log.info(`updatenotification: [PM2] You are using pm2 with id: ${this.PM2} (${pm.name})`); resolve(true); + } else { + Log.debug(`updatenotification: [PM2] pm2 process id: ${pm.pm_id} don't match...`); } }); pm2.disconnect();