Gravatar for dan@getfishtank.ca

Question by Dan Cruickshank, Oct 8, 2015 2:09 PM

Handling Coveo Failing when using Coveo for Sitecore.

Working in a solution that's leveraging Coveo not just for search, but also for ContentSearch, what are the best practices for dealing with Coveo outages?

We have:

  • Loading balanced Coveo behind the REST endpoint
  • Heavy use of JSUI
  • Reasonably use of ContentSearch API

Situations:

  • Situation A) If Coveo goes down it will not bring down any JSUI + REST based pages. We may have no data returned to show, but the pages will load.
  • Situation B) If Coveo goes down any page that use the ContentSearch API will return a 500.
  • Situation C) Any page that references Coveo, even using a SearchBoxView, would return a 500. As we'd use something like this in the global header, it would be particularly bad. :)

Mitigation strategies?

I don't know which of the situations are true, but what should our expectations be and how can we best mitigate these problems?

Any insight would be greatly appreciate!

1 Reply
Gravatar for slangevin@coveo.com

Answer by Simon, Oct 8, 2015 3:04 PM

I made a few drawings of scaling scenarios, here is one:

https://www.lucidchart.com/invitations/accept/66379866-199b-4c75-ae32-9b08f5111e0a

Situation A) If Coveo goes down it will not bring down any JSUI + REST based pages. We may have no data returned to show, but the pages will load.

  • This would not happen with an index outage. Usually, a page loading with no content is due to a security provider failure, and would not affect a public website.

Situation B) If Coveo goes down any page that use the ContentSearch API will return a 500.

  • Yes, that would be a possible situation. To avoid it, use mirrors, see my scaling scenario.

Situation C) Any page that references Coveo, even using a SearchBoxView, would return a 500. As we'd use something like this in the global header, it would be particularly bad. :)

  • Nope, that will not happen, the search box redirects to the search interface.

Hope it helps!
Simon

Gravatar for dan@getfishtank.ca

Comment by Dan Cruickshank, Oct 8, 2015 3:19 PM

Thank you for the diagram! That's fantastic!

On Situation A) & C) - I have a question.

Doesn't the the controller used by SearchBox or the SearchInterface load a model with values in it that require Coveo to be running? For example - source name. If Coveo is "not found" do those controller gracefully fail without 500ing the page?

Gravatar for slangevin@coveo.com

Comment by Simon, Oct 8, 2015 4:58 PM

Hum indeed, the basic search box does only a redirect but when you start adding more components (omnibox, search as you type, etc), it will affect the entire page.

The problem is mostly due to Sitecore not handling exceptions on page load, which requires a proper load of all components in order to work.

So indeed scenario C) could happen if your master and all your mirrors are down, which is obviously a critical situation.

For scenario A), this could not really happen, if Coveo is down, you will face a 500 error, not a no results page.

Regarding mirrors, it would not solve everything since mirrors are read only components, they do not allow indexing and do not host an Admin Service.

This said, if your master index is down, but the mirrors up, you will have a RO Sitecore instance. The search will work, both through the Rest API and the SOAP web service (LINQ for example). But indexing will break, and Coveo-dependant components will not load. So Coveo items (layout, sub-layouts) or the indexing manager, Coveo License details, etc…

In Sitecore 8, we reduced this dependency by giving Lucene more space, but older Sitecore instance only allows a single index, so Coveo becomes a possible point of failure.

You can "simulate" a Lucene like setup by having the mirrors/rest api installed directly on your CD servers, but be careful with specs.

Gravatar for slangevin@coveo.com

Comment by Simon, Oct 8, 2015 5:02 PM

Regarding mirrors, it would not solve everything since mirrors are read only components, they do not allow indexing and do not host an Admin Service.

This said, if your master index is down, but the mirrors up, you will have a RO Sitecore instance. The search will work, both through the Rest API and the SOAP web service (LINQ for example). But indexing will break, and Coveo-dependant components will not load. So Coveo items (layout, sub-layouts) or the indexing manager, Coveo License details, etc…

(2/3)

Gravatar for slangevin@coveo.com

Comment by Simon, Oct 8, 2015 5:04 PM

In Sitecore 8, we reduced this dependency by giving Lucene more space, but older Sitecore instance only allows a single index, so Coveo becomes a possible point of failure.

You can "simulate" a Lucene like setup by having the mirrors/rest api installed directly on your CD servers, but be careful with specs.

(3/3)

Ask a question