Fix ecosystem file reload not updating non-environment attributes
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_confto enableextendExtraConfigprocessing - Remove
envproperty 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 startworkarounds 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.