jalogut / magento2-deployer-plus

Tool based on deployer.org to perform zero downtime deployments of Magento 2 projects
GNU General Public License v3.0
200 stars 59 forks source link

Running module:enable or module:disable on the server crushes the page #64

Open norgeindian opened 4 years ago

norgeindian commented 4 years ago

During our recent deployments we were facing the issue, that running bin/magento module:enable resp. bin/magento module:disable on the server after a deployer deployment crushes the whole page. The error message said, that specific proxies could not be found and debugging a bit further we found out, that the generated folder was completely empty. Checking https://github.com/jalogut/magento2-deployer-plus/issues/29 and https://github.com/magento/magento2/issues/23251 we found out, that this is default Magento behavior to remove the generated folder for these commans. This happens in \Magento\Setup\Console\CompilerPreparation::handleCompilerEnvironment. So obviously the problem is, that the folder is not properly regenerated again. We used some approaches of the issues mentioned above and found out the following:

So it seems as if composer stops Magento from regenerating the generated folder somehow if these flags are set. I assume that this happens because composer already throws the error before Magento is ready again. Please be so kind and take a look at it. I hope this is generally reproducible. Maybe it makes sense to think again about https://github.com/jalogut/magento2-deployer-plus/pull/51

osrecio commented 4 years ago

To enable or disable modules you should redeploy. Is the safe way to do it.

sprankhub commented 4 years ago

@osrecio I agree in general. However, things do not always go as expected. Hence, it is rather important that bin/magento works correctly on the server as well. And unfortunately, it is currently broken due to the command composer dump-autoload --optimize --apcu. Errors not only happen if you run module:disable, but also for other commands like setup:upgrade.