We did a series of load tests this morning on the client’s new public EPiServer website and found an issue with large files being supplied by ImageVault; that is, files large enough as not to be stored in the database but rather on the disk. Already at 5 concurrent requests to the same ImageVault resource, ImageVault Core starts producing IO Exceptions.
Note that for single requests to resources as well as semi concurrent ones everything works fine.
2015-05-05 12:16:37,177 ERROR [24][ImageVault.Core.Service.MediaStreamService] ImageVault.Core.Service.MediaStreamService .WriteResponseHeadersAndGetContent - Error WriteContentToResponse, Id:'3vl1gllfd5p8bkriprai'. The file 'C:\Users\OurServiceUser\AppData\Local\Temp\DiskStorage\3vl1gllfd5p8bkripraiour-filename.jpg' already exists. System.IO.IOException: The file 'C:\Users\OurServiceUser\AppData\Local\Temp\DiskStorage\3vl1gllfd5p8bkripraiour-filename.jpg' already exists.
In order to limit strain on the network, ImageVault uses a thing called a shadow copy folder on the Core server. Resources are placed in this location as a kind of cache allowing for faster retrieval. I tried turning off this feature by adding <add key=”DisableShadowCopy” value=”true” /> to the ImageVault.Core.Host.exe.config file in order to see if it would make any difference.
The result was roughly the same.
2015-05-05 13:23:36,383 ERROR [6][ImageVault.Core.Service.MediaStreamService] ImageVault.Core.Service.MediaStreamService .WriteResponseHeadersAndGetContent - Error WriteContentToResponse, Id:'3vl1gllfd5p8bkriprai'. The process cannot access the file '\\networkpath\ImageVault$\DiskStorage\3vl1gllfd5p8bkripraiour-filename.jpg' because it is being used by another process. System.IO.IOException: The process cannot access the file '\\networkpath\ImageVault$\DiskStorage\3vl1gllfd5p8bkripraiour-filename.jpg' because it is being used by another process.
As expected the ImageVault Core service now tried to access the network share each time the resource was requested. Not surprisingly though, the problem still persisted.
I’ve contacted Meriworks support on how to solve this issue.
Update: This was reported as bug #3048. Similar problem was solved in ImageVault version 4.7.12; so you may want to try upgrading to see if it does the job for you.