.NET Framework 4.7.1 support

#1
Our web applicaiton is web farm and using scaleout cluster to manage session and cache. We are using Scaleout v5.4.3.255 for session and cache management along with .NET Framework 4.7.0

Some of our front end servers got updated with .NET Framework 4.7.1, after that we started to seeing some weird issues on those servers. No code deploy too. Page renders the different cache object details on those servers.

Does Scaleout v5.4.3.255 support .NET Framework 4.7.1?

Thanks,
Raj
 

admin

Administrator
#1
Hi Raj,
Version 5.4.3.255 is compatible with .NET 4.7.1. You'd see assembly load exceptions being thrown if there was an incompatibility.

Are you seeing any errors? Are there any unusual entries in the Windows Event Log?
 
#1
No errors in application and unusual entries in the Windows Event log.

But i have noticed a duplicate cache object in the scaleout store like this
114929868.cxinfo_58ACC2A6
114929868.cxinfo_58ACC2A6

We were using NamedCache provider. We reverted the .NET framework to 4.7.0 and the issue gets resolved. There was no code deploy or database changes.

Only issue we saw it in the application was displaying the user info(session) and cache object details.

any hint would help us to troubleshoot the issue, until then we can't upgrade to .NET framework 4.7.1
 

admin

Administrator
#1
Duplicate objects with the same key aren't possible--you're seeing these duplicates in the Object Browser? If so, could you please select the duplicates and take a look at "Key" field in the Browser's SOSS Info tab to see if the hex version of duplicate keys differ? (...I suppose it's possible that MS changed something how their crypto hash algorithms work in 4.7.1, but we almost certainly would have heard about this from other users by now.)
 
#1
Only couple of servers got updated to .NET 4.7.1, and rest of the servers were having .NET 4.7.0

If crypto hash algorithm changed on 4.7.1 then it might create a different hex version. Having mixed version of .NET framework on our web farm, might have caused different hex version.

I will install the .net 4.7.1 on one of the front end server and try to reproduce the duplicate cache object and check the hex version.

Thanks for your info.
 
#1
Did installed .net framework 4.7.1 on one of the web server and got the duplicate object.
Here is the values for each object
114929868.cxinfo_58ACC2A6
key : 0x0000000000000000000000000000000000000000000000000000000000000000
114929868.cxinfo_58ACC2A6
key : 0x196B1FC1799901D3E0D9811CD12151ED10F08699B371F479174CCB7B679A1271
I believe the object with key 0x000000.... loaded from .net framework 4.7.1 web server.
Not sure, issue with .net framework 4.7.1 or Scaleout with .net framework 4.7.1.
Thanks
Raj
 
#1
Cleared the scaleout store and loaded the object from .net 4.7.1 installed web server. That object has the key as 0x0000000000000000000000000000000000000000000000000000000000000000
Object id : 114929868.cxinfo_58ACC2A6
key : 0x0000000000000000000000000000000000000000000000000000000000000000
Now loaded the different object
Object id : 118295678.cxinfo_58ACC2A6
key : 0x0000000000000000000000000000000000000000000000000000000000000000
Object ID value is different but Hash key is same.
Even i did reboot the webserver and tried it but same result.
--Raj
 

admin

Administrator
#1
Ok, thanks for checking that Raj. We'll try to get a repro here. Please provide some details:
  • Operating system.
  • Settings or mappings in your web.config's cryptographySettings element (if any).
 

admin

Administrator
#1
We've reproduced the problem on a setup similar to yours but haven't yet determined a root cause. We've also confirmed that this issue does not occur with our latest release (5.6.3.318) running under 2008R2/4.7.1.

We'll continue to dig into this, but if you need an immediate way to move forward then upgrading to the latest ScaleOut release is currently your best option.
 

admin

Administrator
#1
Raj,
We've narrowed down the problem to changes Microsoft made to struct argument passing in RyuJIT for .NET 4.7.1.

The simplest resolution is to upgrade to our latest release, but if that isn't possible then you should be able to work around the problem by changing your app's web.config file to use Microsoft's original JIT engine:

Code:
<?xml version="1.0"?>
<configuration>
  <runtime>
    <useLegacyJit enabled="1" />
  </runtime>
</configuration>
To resolve the key display issue in the Object Browser, you'll need to perform the following steps:
  • Add the useLegacyJit element above to the browser's config file at "C:\Program Files\ScaleOut_Software\StateServer\DOTNET4.0\DotNetBrowser.exe.config".
  • Manually uninstall the ngen'd (native) image of the Object Browser by running the following command out of your .NET Framework directory:
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319> ngen uninstall "c:\Program Files\ScaleOut_Software\StateServer\DOTNET4.0\DotNetBrowser.exe"
 
Top