When starting my local site I get the following exception:
[WebException: The remote server returned an error: (503) Server Unavailable.]
EPiServer.Find.Api.Command.GetResponse(IJsonRequest request) +109
[ServiceException: The remote server returned an error: (503) Server Unavailable.
ProcessClusterEventTimeoutException[failed to process cluster event (put-mapping [NestedDummyObject$$nested]) within 30s]]
EPiServer.Find.Api.Command.GetResponse(IJsonRequest request) +679
EPiServer.Find.ClientConventions.NestedConventions.AddNestedType(Type declaringType, String name) +516
System.Collections.Generic.List`1.ForEach(Action`1 action) +13856095
EPiServer.Find.Commerce.CatalogContentClientConventions.ApplyNestedConventions(NestedConventions nestedConventions) +298
EPiServer.Find.Commerce.CatalogContentClientConventions.ApplyConventions(IClientConventions clientConventions) +81
EPiServer.Framework.Initialization.Internal.ModuleNode.Execute(Action a, String key) +56
EPiServer.Framework.Initialization.Internal.ModuleNode.ConfigureContainer(ServiceConfigurationContext context) +150
EPiServer.Framework.Initialization.InitializationEngine.ConfigureContainer(HostType hostType) +386
EPiServer.Framework.Initialization.InitializationEngine.ExecuteTransition(Boolean continueTransitions) +115
EPiServer.Framework.Initialization.InitializationModule.EngineExecute(HostType hostType, Action`1 engineAction) +293
EPiServer.Framework.Initialization.InitializationModule.FrameworkInitialization(HostType hostType) +230
ASP.global_asax..ctor() in c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\d7c1bc4c\fac016f3\App_global.asax.0.cs:0
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +138
System.Activator.CreateInstance(Type type, Boolean nonPublic) +105
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object args, CultureInfo culture, Object activationAttributes, StackCrawlMark& stackMark) +1499
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object args, CultureInfo culture, Object activationAttributes) +191
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object args, CultureInfo culture) +27
System.Web.HttpRuntime.CreateNonPublicInstance(Type type, Object args) +82
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +300
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +343
[HttpException (0x80004005): Exception has been thrown by the target of an invocation.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +539
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +125
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +731I'm starting to think that Find is down at the moment. I have no way of knowing what the cause is and I can't try/catch this error so other developers can continue.
Hope someone can help me out!
yes, this happens because the find index is unreachable. Commerce is updating the nested query setup, and that setup is stored as part of the index. If the index happens to be down at the moment the application starts you get this exception. We are aware that this is not ideal and we will try to come up with a way to handle this.
Can you get the application to run after this initial exception, or does it get stuck in this state? If you can get it running, I think nested queries will still work as expected since the conventions were probably written to to the index before and have not changed since.
If you are setting up new site, check following settings in your web.config<episerver.find serviceUrl="XXX" defaultIndex="XXX" />Another possibility is that Index has been expired.
We where not able to run after this exception. It's thrown somewhere on initialization in Episerver and we can't catch it (I think). So we where stuck in this state for more than 2,5 hours.
I've also contacted support as this is (not ideal ;) as you put it. We've had intermittent hick-ups but they've lasted mere minutes.
So I'm hoping Episerver can do something so we can at least run the website and log the error.
@K Khan: I created a new index but this directs to the same server so I got the same error.
Which version of EPiServer.Find.Commerce are you on?
I have suspects on this line "ProcessClusterEventTimeoutException[failed to process cluster event (put-mapping [NestedDummyObject$$nested]) within 30s]]
So it seems to me as a server problem. Perhaps you can somehow switch to another server to test if it works?
When creating a new index we're always assigned to the same one. But when deploying the code to another envirnonment that runs on another Find index (payed version) it works. So it does seem to be a server issue indeed. I've asked the Find team to provide help in at least catching this error so we can continue or indeed provide another server as 2,5 hours * 4 developers is a long time to be down :(
Thanks for your input!
The Find version is 9.6.2.
I have been able to circumvent the problem by a hack, adding an interceptor, see Gist.
Problem was/is that these exceptions were thrown before we were able to catch exceptions, at initialization.
Now the exceptions can be catched, because the interceptor handles the exceptions thrown at initialization.
I think it should not be necessary though, to do something like this. When Find is down, the initializable modules should not throw errors we can't handle, becuase on a production environment it would not be very pretty ;)
Find.Commerce 9.7.2 contains a bug fix - COM-2912 which will catch the exception and display a nice(r) error message in case it can't not reach Find services for some reasons. So when you upgrade you won't need to add that interceptor anymore :)
Ah OK, cool. Thnx for the info :)