Hi All,
We have recently upgraded from U13 to U17. Overall, our upgrade has been successful, but we are seeing intermittent issues where our public Umbraco site fails on all requests after what I can only assume is a race condition.
What we are seeing is that immediately after an app pool refresh, or app pool restart we occasionally see a concurrent update error, and once we see it once, then all subsequent requests will show the same error, until we refresh/restart the app pool again.
I don’t even know where to start with debugging into this, partly because it’s intermittent, and partly because I can’t tell what collection is becoming corrupt… But mainly I guess because I don’t know what I’m doing…
The full exception is as below:
An unhandled exception was thrown by the application.“,”@l":“Error”,“@x”:“System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection’s state is no longer correct.
at Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement.LanguageRepository.GetDefault()
at Umbraco.Cms.Core.Services.LanguageService.GetDefaultIsoCodeAsync()
at Umbraco.Cms.Core.Services.LocalizationService.GetDefaultLanguageIsoCode()
at Umbraco.Cms.Web.Common.Middleware.UmbracoRequestMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.InterfaceMiddlewareBinder.<>c__DisplayClass2_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at Umbraco.Cms.Web.Common.Middleware.PreviewAuthenticationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.InterfaceMiddlewareBinder.<>c__DisplayClass2_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at Umbraco.Cms.Web.Common.Middleware.UmbracoRequestLoggingMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.InterfaceMiddlewareBinder.<>c__DisplayClass2_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at SixLabors.ImageSharp.Web.Middleware.ImageSharpMiddleware.Invoke(HttpContext httpContext, Boolean retry)
at Umbraco.Cms.Api.Management.Middleware.BackOfficeAuthorizationInitializationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.InterfaceMiddlewareBinder.<>c__DisplayClass2_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
at ILMAG.Website.Middleware.LogSessionId.InvokeAsync(HttpContext context) in D:\a\1\s\ILMAG.Website\Middleware\LogSessionId.cs:line 27
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at ILMAG.Website.Middleware.RedirectInTest.InvokeAsync(HttpContext context) in D:\a\1\s\ILMAG.Website\Middleware\RedirectInTest.cs:line 28
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.HandleException(HttpContext context, ExceptionDispatchInfo edi)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.HandleException(HttpContext context, ExceptionDispatchInfo edi)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
at NWebsec.AspNetCore.Middleware.Middleware.CspMiddleware.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(HttpContext context)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync()”,“@tr”:“1782bffb115bd97f3e92ae53460c8173”,“@sp”:“c920d62a6c7b60c3”,“ConnectionId”:“3098476548731183075”,“TraceIdentifier”:“40001fe4-0001-2b00-b63f-84710c7967bb”,“EventId”:{“Id”:2,“Name”:“ApplicationError”},“SourceContext”:“Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer”,“RequestId”:“40001fe4-0001-2b00-b63f-84710c7967bb”,“RequestPath”:“/meet-and-greet/gatwick/”,“ProcessId”:15312,“ProcessName”:“w3wp”,“ThreadId”:19,“ApplicationId”:“07342b4f13ccc4e43c455af8d8ea7b955f43e454”,“MachineName”:“WEB2-EC2AMAZ-HP”,“Log4NetLevel”:“ERROR”}
Please let me know if I can provide any further info that might make it easier to track this down…
Thanks,
Chris