Skip to content

Conversation

@sanchitwadehra
Copy link

Description

Fixes #3742 - pm2 restart ecosystem.config.js does not reload app details from ecosystem file

When using pm2 restart ecosystem.config.js or pm2 reload ecosystem.config.js, only environment variables were being updated from the ecosystem file. Other configuration attributes like script path, cwd, interpreter, etc. were ignored.

Root Cause

The _startJson method in lib/API.js was only passing environment variables to the _operate method during restart/reload operations, but not the complete application configuration needed to update non-environment attributes.

Solution

Modified the _startJson method to pass the complete application configuration as current_conf when performing restart/reload operations on ecosystem files. This enables the existing Utility.extendExtraConfig mechanism to update all configuration attributes.

Changes

  • Extract complete app configuration from ecosystem file during restart/reload
  • Pass configuration as current_conf to enable extendExtraConfig processing
  • Remove env property from config copy to avoid duplication with existing env handling
  • Maintains full backward compatibility

Testing

  • ✅ Existing unit tests pass
  • ✅ App configuration update tests pass
  • ✅ JSON file handling tests pass
  • ✅ Restart/reload operations work correctly
  • ✅ No breaking changes to existing functionality

Impact

  • Before: Only environment variables updated, other config ignored
  • After: All ecosystem file attributes (script, cwd, interpreter, instances, etc.) properly updated
  • Result: Eliminates need for pm2 kill && pm2 start workarounds that cause unnecessary downtime

This resolves a 6-year-old issue that has affected many PM2 users who need to update application configurations without downtime.

Fixes Unitech#3742

When using 'pm2 restart ecosystem.config.js' or 'pm2 reload ecosystem.config.js',
only environment variables were being updated from the ecosystem file.
Other configuration attributes like script path, cwd, interpreter, etc. were ignored.

This fix modifies the _startJson method in lib/API.js to pass the complete
application configuration (not just environment variables) when performing
restart/reload operations on ecosystem files.

Changes:
- Extract complete app configuration from ecosystem file during restart/reload
- Pass configuration as current_conf to enable extendExtraConfig processing
- Remove env property from config copy to avoid duplication
- Maintains backward compatibility with existing environment variable handling

Now all ecosystem file attributes (script, cwd, interpreter, instances, etc.)
are properly updated during restart/reload operations, eliminating the need
for 'pm2 kill && pm2 start' workarounds that cause unnecessary downtime.
@CLAassistant
Copy link

CLAassistant commented Aug 31, 2025

CLA assistant check
All committers have signed the CLA.

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.

pm2 restart ecosystem.config.js does not reload app details from ecosystem file

2 participants