Skip to content

refactor(updatenotification): replace pm2 usage with node logic#4134

Merged
khassel merged 1 commit into
MagicMirrorOrg:developfrom
KristjanESPERANTO:pm2
May 3, 2026
Merged

refactor(updatenotification): replace pm2 usage with node logic#4134
khassel merged 1 commit into
MagicMirrorOrg:developfrom
KristjanESPERANTO:pm2

Conversation

@KristjanESPERANTO

@KristjanESPERANTO KristjanESPERANTO commented May 2, 2026

Copy link
Copy Markdown
Collaborator

We can rely on PM2's native restart-on-exit behavior instead of the programmatic pm2 API.

Fixes https://github.com/MagicMirrorOrg/MagicMirror/security/dependabot/82 by removing pm2.

Note: Originally this PR was intended to update pm2, but after discussion, we decided to replace it instead. See the discussion below.

@KristjanESPERANTO KristjanESPERANTO changed the title chore: bump pm2 to ^7.0.1 chore: bump pm2, add dsiconnect and tests May 2, 2026
@KristjanESPERANTO KristjanESPERANTO changed the title chore: bump pm2, add dsiconnect and tests chore: bump pm2, add disconnect and tests May 2, 2026
@KristjanESPERANTO KristjanESPERANTO changed the title chore: bump pm2, add disconnect and tests pm2: bump version, add disconnect and tests May 2, 2026
@khassel

khassel commented May 2, 2026

Copy link
Copy Markdown
Collaborator

I have a general question to the pm2 stuff. We use it here to restart mm after updating.

AFAIS the pm2 stuff does restart mm whenever it exits. So why do we need the whole pm2 stuff inside mm?

Would it be sufficient to exit mm and pm2 does the restart from outside?

Background:

  • pm2 is a big dependency
  • in my docker setup I don't need it at all, I uninstall it (now I have to remove the test too, otherwise it will fail)

@sdetweil

sdetweil commented May 2, 2026

Copy link
Copy Markdown
Collaborator

Good question. I think it was not forcing the error path. Oops, app just disappeared, better restart.

Vs crash and hope, in the auto update module path

@KristjanESPERANTO

Copy link
Copy Markdown
Collaborator Author

Yes, good question! I took another look and don't see any significant downside for PM2 users if we replace the PM2 logic with node logic. I'm open to provide another PR or adapt this one if we decide to remove PM2.

@sdetweil since Karsten's take is clear, what is yours about the removal?

@sdetweil

sdetweil commented May 2, 2026

Copy link
Copy Markdown
Collaborator

I see no reason to keep the pm2 restart code. If we can kill the process we are in as there may be other instances running too

@KristjanESPERANTO KristjanESPERANTO changed the title pm2: bump version, add disconnect and tests refactor(updatenotification): replace pm2 usage with node logic May 3, 2026
@khassel khassel merged commit f2759ad into MagicMirrorOrg:develop May 3, 2026
12 checks passed
@KristjanESPERANTO KristjanESPERANTO deleted the pm2 branch May 3, 2026 07:55
@rejas rejas mentioned this pull request Jul 1, 2026
rejas added a commit that referenced this pull request Jul 1, 2026
## Release Notes
Thanks to: @angeldeejay, @egeekial, @khassel, @KristjanESPERANTO,
@MikeBishop, @rejas
> ⚠️ This release needs nodejs version >=22.21.1 <23 || >=24 (no change
to previous release)

[Compare to previous Release
v2.36.0](v2.36.0...develop)


### [core]
- Prepare Release 2.37.0 (#4193)
- fix(electron): map IPv6 :: wildcard to localhost (#4188)
- refactor(main): modernize DOM update flow with async/await (#4186)
- refactor(main): simplify _updateDom with async/await (#4185)
- fix(security): prevent unauthorized secret expansion in socket
payloads (#4184)
- refactor(main): simplify updateDomWithContent async flow (#4182)
- fix: modules losing data after HTTP 304 responses (#4180)
- chore: add missing core defaults (#4181)
- fix(server): enforce ipWhitelist for Socket.IO too (#4169)
- feat(systeminfo): include Git hash and branch in system information
log (#4167)
- feat(electron): support object-based electronSwitches (#4161)
- systeminformation thread not ending: move error handling from utils to
app (#4160)
- fix systeminformation thread not ending (#4155)
- refactor: use ES module imports in browser core (#4158)
- refactor(core): remove old Object.assign polyfill (#4157)
- refactor: rewrite Module as an ES6 class (#4151)
- refactor: rewrite NodeHelper as an ES6 class (#4147)
- update eletron to v42 (#4144)
- refactor(utils): drop ajv dependency (#4142)
- fix(systeminformation): output right 'used node' version (from parent
process) (#4141)
- fix: skip postinstall git clean when not in a git repository (#4139)
- Remove unnecessary conditionals and fix falsy property check in
imperial conversion (#4135)
- update version in package.json

### [dependencies]
- update dependencies (#4191)
- Bump actions/checkout from 6 to 7 (#4190)
- chore: update dependencies and adjust import path for SunCalc (#4189)
- update dependencies incl. electron and revert
yauzl-electron-install-fix (#4183)
- update dependencies, add electron fix in package.json (#4175)
- chore: update dependencies (#4162)
- Bump actions/dependency-review-action from 4 to 5 (#4152)
- Unify linting: replace Stylelint and markdownlint with ESLint (#4148)
- update dependencies and workflows to node v26 (#4140)

### [modules/alert]
- CodeQL cleanup for alerts #18, #19, #20 (#4153)
- fix: resolve CodeQL alerts #24 and #26 (#4145)
- fix(electron): resolve CodeQL alerts #22 and #25 in electron.js
(#4136)

### [modules/calendar]
- perf(calendar): pre-filter ICS data before parsing (#4168)
- perf(calendar): use async ICS parsing to avoid blocking event loop
(#4143)

### [modules/newsfeed]
- [newsfeed] add allowBasicHtmlTags option for basic emphasis (#4176)

### [modules/updatenotification]
- fix(updatenotification): don't spawn a child process when running
under PM2 (#4166)
- fix(updatenotification): use process.argv[0] as restart binary (#4163)
- fix(updatenotification): preserve start mode on restart (#4156)
- fix(updatenotification): fix ref diff parsing for fetch --dry-run
(#4138)
- refactor(updatenotification): replace pm2 usage with node logic
(#4134)

### [modules/weather]
- feat(weather): add Buienradar provider (#4164)

### [testing]
- remove warning in unit tests (for nodejs >= v25) (#4149)
- polish HTTP 304 docs/test/handling (#4129)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
Co-authored-by: BugHaver <43462320+bughaver@users.noreply.github.com>
Co-authored-by: BugHaver <43462320+lsaadeh@users.noreply.github.com>
Co-authored-by: Karsten Hassel <hassel@gmx.de>
Co-authored-by: Magnus <34011212+MagMar94@users.noreply.github.com>
Co-authored-by: Koen Konst <koenspero@gmail.com>
Co-authored-by: Koen Konst <c.h.konst@avisi.nl>
Co-authored-by: Bugsounet - Cédric <github@bugsounet.fr>
Co-authored-by: dathbe <github@beffa.us>
Co-authored-by: veeck <gitkraken@veeck.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marcel <m-idler@users.noreply.github.com>
Co-authored-by: sam detweiler <sdetweil@gmail.com>
Co-authored-by: Kevin G. <crazylegstoo@gmail.com>
Co-authored-by: Jboucly <33218155+jboucly@users.noreply.github.com>
Co-authored-by: Jboucly <contact@jboucly.fr>
Co-authored-by: Jarno <54169345+jarnoml@users.noreply.github.com>
Co-authored-by: Jordan Welch <JordanHWelch@gmail.com>
Co-authored-by: Blackspirits <blackspirits@gmail.com>
Co-authored-by: Samed Ozdemir <samed@xsor.io>
Co-authored-by: in-voker <58696565+in-voker@users.noreply.github.com>
Co-authored-by: Andrés Vanegas Jiménez <142350+angeldeejay@users.noreply.github.com>
Co-authored-by: cgillinger <christian.gillinger@gmail.com>
Co-authored-by: Sonny B <43247590+sonnyb9@users.noreply.github.com>
Co-authored-by: sonnyb9 <sonnyb9@users.noreply.github.com>
Co-authored-by: Morgan McBee <egeekial@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Mike Bishop <mbishop@evequefou.be>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants