U4-3222 - "The device is not ready" on Azure hosting

Created by Rasmus Fjord 23 Oct 2013, 10:42:39 Updated by Shannon Deminick 22 Sep 2015, 09:31:31

Out of nowhere images are inaccessable when being called through razor. But when we restart the site through Azure the everythings work fine. Its not seen often, but over a period of 4 months, we have seen it 2 times on 2 different customer setups.

2 customers running on their own seperate Azure accounts, with a "standard website (small)"(dedicated server/website) where they have 1 site running pr customer. They run 4.11.8 and 6.1.4 of Umbraco. There is no multi instancing on this or anything.

Darren suggests that its about some lucene indexs : http://our.umbraco.org/forum/developers/api-questions/43516-umbraco-on-azure-The-device-is-not-ready-bug?p=0#comment164121

Stacktrace(both looks the same basicly) :

2013-07-24 00:00:45,958 [7] WARN umbraco.macro - [Thread 16] Error loading MacroEngine script (file: blablablamacro.cshtml, Type: ''. Exception: System.IO.IOException: The device is not ready.

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.ReadCore(Byte[] buffer, Int32 offset, Int32 count) at System.IO.FileStream.Read(Byte[] array, Int32 offset, Int32 count) at System.IO.BinaryReader.Read(Byte[] buffer, Int32 index, Int32 count) at Lucene.Net.Store.SimpleFSDirectory.SimpleFSIndexInput.ReadInternal(Byte[] b, Int32 offset, Int32 len) at Lucene.Net.Store.BufferedIndexInput.Refill() at Lucene.Net.Store.BufferedIndexInput.ReadByte() at Lucene.Net.Store.IndexInput.ReadVInt() at Lucene.Net.Index.FieldsReader.Doc(Int32 n, FieldSelector fieldSelector) at Examine.LuceneEngine.SearchResults.CreateFromDocumentItem(Int32 i) at Examine.LuceneEngine.SearchResults.d__1.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source) at umbraco.MacroEngines.ExamineBackedMedia.GetUmbracoMedia(Int32 id) at umbraco.MacroEngines.Library.RazorLibraryCore.MediaById(Int32 Id) at umbraco.MacroEngines.DynamicNode.MediaById(String Id) at ASP._Page_macroScripts_blablabla_cshtml.Execute() in c:\DWASFiles\sites\sitename-\VirtualDirectory0\site\wwwroot\macroScripts\blablabla.cshtml:line 48 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.WebPages.WebPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at umbraco.MacroEngines.RazorMacroEngine.ExecuteRazor(MacroModel macro, INode currentPage) at umbraco.MacroEngines.RazorMacroEngine.Execute(MacroModel macro, INode currentPage) at umbraco.macro.loadMacroScript(MacroModel macro) at umbraco.macro.renderMacro(Hashtable pageElements, Int32 pageId) Then i restarted the solution and now it works again, but how can this occur. There is nothing supcious in the logs besides a ton of macros not being ready "The device is not ready". Except one other bug, when i was notified i first tried to rebuild the umbraco.config file but in the logs it says this : System.UnauthorizedAccessException: Access to the path 'C:\DWASFiles\Sites\blablabla\VirtualDirectory0\site\wwwroot\App_Data\umbraco.config' is denied.


Laurence Gillian 18 Sep 2015, 11:04:18

Although not specific to this issue, in a more general sense, see this thread for the IOExpection issue and Lucene/Examine: https://our.umbraco.org/forum/getting-started/installing-umbraco/20999-Disable-Lucene-Examine#228320

Shannon Deminick 22 Sep 2015, 09:31:31

The problem is that Azure uses a remote file system. To work around this you can use the latest Umbraco versions and use the LocalOnly flag or use the examine TempStorage library. Details can be found here:https://our.umbraco.org/forum/getting-started/installing-umbraco/20999-Disable-Lucene-Examine#comment-228320

Priority: Normal

Type: Bug

State: Closed


Difficulty: Normal


Backwards Compatible: True

Fix Submitted:

Affected versions: 4.11.8, 6.1.4, 6.1.6

Due in version:


Story Points: