Serious IIS Application Pool recycling bug/design flaw

2 years ago
timmit wrote:
I have removed the shadow copy code from PluginManager.cs, you can find my changes here -

https://pastebin.com/RABL78sb



I successfully applied these changes to my codebase and deployed to my test server.  Everything seems to be working fine and the /Plugins/bin folder is empty (except for the placeholder.txt file).

It may take a while before Azure decides to re-start the app services, so it is just a wait and see now.

Thanks timmit for the code fix.
2 years ago
Hello everyone. We added the ability to disable the shadow copy in the settings. Please see this commit for more details
2 years ago
So to fix this issue we set the following? I'm not clear on what settings to use to resolve this issue.

    //Enable if you want to copy "locked" assemblies from /Plugins/bin directory to temporary subdirectories on application startup
    "CopyLockedPluginAssembilesToSubdirectoriesOnStartup": true,
    //Enable if you want to copy plugins library to the /Plugins/bin directory on application startup
    "UsePluginsShadowCopy": false,
2 years ago
rolls wrote:
So to fix this issue we set the following? I'm not clear on what settings to use to resolve this issue.

    //Enable if you want to copy "locked" assemblies from /Plugins/bin directory to temporary subdirectories on application startup
    "CopyLockedPluginAssembilesToSubdirectoriesOnStartup": true,
    //Enable if you want to copy plugins library to the /Plugins/bin directory on application startup
    "UsePluginsShadowCopy": false,


Hello. If you set "UsePluginsShadowCopy" to the false value, then all shadow copy settings would be ignored. You can chose betwin a disable the shadow copy functional and creating a temporary directories for blocked libraries.
2 years ago
Hello,

I don't think this issue is resolved with the fix provided here.
Our demo stores are having the same issues. From 32 stores roughly 1 or 2 crash every day with the same error - no access to a .dll when trying delete/create shadow copies. If we set the Disable Overlapped Recycle setting in IIS to true we stop having this issue. That is not a fix to this issue but rather a workaround due to the disadvantages it brings.
Moreover, our clients that use Azure do not have this option as far as I am aware and they are left with no choice at the moment and this is a very big problem for them. We have numerous people writing tickets to us about this issue and none of the fixes we've implemented have lead to any success so far.

Can you take a look at this problem again?

Regards,
Anton
2 years ago
I agree with the nop-templates team's assessment.

nopCommerce team - this is not a 4.10 type fix.  This is an emergency production break-fix. Something that needs to be corrected and released before 4.10 is ready. Something branched off the production 4.00 release code, fixed and then merged back in. This is not a minor bug.

Thanks,

Paul
2 years ago
Anton (and those on Azure)

There is a way to disable overlapped recycle. Its not the easiest but it seems to be working. I have it disabled and the patch merged to my 4.00 code and since then I have had no problems (in fact it hasn't restarted at any point since)

Here's the info on stackoverflow https://stackoverflow.com/questions/27421024/disable-pool-recycling-on-azure-websites
2 years ago
Can someone PLEASE provide a step by step method to fix this for azure deployed, no source code, instances?
2 years ago
This worked -> https://stackoverflow.com/questions/27421024/disable-pool-recycling-on-azure-websites

added applicationHost.xdt file with
-------------------------
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">>
  <system.applicationHost>
    <applicationPools>
      <add name="SITE-NAME" xdt:Locator="Match(name)">
        <recycling disallowOverlappingRotation="true" xdt:Transform="Insert" />
      </add>
      <add name="~1SITE-NAME" xdt:Locator="Match(name)">
        <recycling disallowOverlappingRotation="true" xdt:Transform="Insert" />
      </add>
    </applicationPools>
  </system.applicationHost>
</configuration>
---------------------
to

/Site
2 years ago
Still getting error even after turning off recycling