Today I came across the ConfigStoreException. My Worker Roles were constantly being recycled by Windows Azure and I wasn’t able to use the remote debugger to get at any information. (Using Windows Azure SDK 2.2)
To be fair, the Worker Roles ran fine on my local Windows Azure Emulator. As you can imagine, I was completely baffled by all this… So I decided to check if Windows Azure Diagnostics was able to log anything. Fortunately, I was able to get two exceptions. (The exceptions were found in the WADWindowsEventLogsTable located in the Windows Azure Storage Account used for your Windows Azure Diagnostics)
The first exception wasn’t very useful, but I’m including it so that it may help others find this post.
Faulting application name: CacheInstaller.exe, version: 1.0.5137.0, time stamp: 0x52304efc
Faulting module name: KERNELBASE.dll, version: 6.2.9200.16451, time stamp: 0x50988aa6
Exception code: 0xe0434352
Fault offset: 0x000000000003811c
Faulting process id: 0x7fc
Faulting application start time: 0x01cf13af2e05e7e7
Faulting application path: E:\plugins\Caching\CacheInstaller.exe
Faulting module path: D:\Windows\system32\KERNELBASE.dll
Report Id: f1681792-7fa2-11e3-93f2-00155d66be87
The second entry contained the actual exception that helped me find a solution.
Application: CacheInstaller.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: Microsoft.ApplicationServer.Caching.ConfigStoreException
Stack:
at Microsoft.ApplicationServer.Caching.CacheInstaller.CacheInstaller.Main(System.String[])
Talking with Michael Wood about the issue, he mentioned that Windows Azure Cache configurations required a Windows Azure Storage Account Connection String. So I took a closer look, and there it was… The Windows Azure Cache configurations were pointing to an old Windows Azure Storage Account that had been retired at the end of our last iteration. Changing the Windows Azure Storage Account Connection String to a newer Windows Azure Storage Account allowed me to deploy the Worker Roles.
Had I not paid any attention to the second log entry, I would still be looking for a way to get those Roles to stop recycling.