From 9cdffd0c09861acec7a6844793067f367e1150b2 Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 26 Sep 2012 16:02:27 +0000 Subject: [PATCH] Merge from 1.5 branch: NIHVIVO-3973 If the Solr index is not available, do not offer the user the ability to re-index. Show an error message instead. --- .../search/controller/IndexController.java | 20 ++++++++++++++--- .../freemarker/body/admin/searchIndex.ftl | 22 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/IndexController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/IndexController.java index 90aa503fd..0738a5772 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/IndexController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/IndexController.java @@ -15,6 +15,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.solr.client.solrj.SolrServer; +import org.apache.solr.client.solrj.SolrServerException; import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; @@ -26,6 +28,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Red import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder; +import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup; import edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread.WorkLevel; import edu.cornell.mannlib.vitro.webapp.utils.threads.VitroBackgroundThread.WorkLevelStamp; @@ -151,9 +154,20 @@ public class IndexController extends FreemarkerHttpServlet { body.put("elapsed", formatElapsedTime(since, new Date())); body.put("expected", formatElapsedTime(since, expectedCompletion)); body.put("hasPreviousBuild", since.getTime() > 0L); + body.put("indexIsConnected", testIndexConnection()); return new TemplateResponseValues(TEMPLATE_NAME, body); } + private Boolean testIndexConnection() { + try { + SolrSetup.getSolrServer(getServletContext()).ping(); + return Boolean.TRUE; + } catch (Exception e) { + log.error("Can't connect to the Solr server.", e); + return Boolean.FALSE; + } + } + private Date figureExpectedCompletion(Date startTime, long totalToDo, long completedCount) { Date now = new Date(); @@ -183,11 +197,11 @@ public class IndexController extends FreemarkerHttpServlet { private String figureCurrentTask(Collection flags) { if (flags.contains(IndexBuilder.FLAG_REBUILDING)) { - return "rebuilt"; + return "Rebuilding"; } else if (flags.contains(IndexBuilder.FLAG_UPDATING)) { - return "updated"; + return "Updating"; } else { - return ""; + return "Not working on"; } } diff --git a/webapp/web/templates/freemarker/body/admin/searchIndex.ftl b/webapp/web/templates/freemarker/body/admin/searchIndex.ftl index fb5a94b7c..ab5ee849e 100644 --- a/webapp/web/templates/freemarker/body/admin/searchIndex.ftl +++ b/webapp/web/templates/freemarker/body/admin/searchIndex.ftl @@ -6,9 +6,20 @@

Search Index Status

-<#if worklevel == "IDLE"> +<#if !indexIsConnected> + + + +<#elseif worklevel == "IDLE"> + +

The search indexer is idle.

<#if hasPreviousBuild??> -

Most recent update was at ${since?string("hh:mm:ss a, MMMM dd, yyyy")}

+

The most recent update was at ${since?string("hh:mm:ss a, MMMM dd, yyyy")}

@@ -17,11 +28,16 @@ Reset the search index and re-populate it.

+ <#elseif totalToDo == 0> +

Preparing to rebuild the search index.

since ${since?string("hh:mm:ss a, MMMM dd, yyyy")}, elapsed time ${elapsed}

+ <#else> -

The search index is currently being ${currentTask}.

+ +

${currentTask} the search index.

since ${since?string("hh:mm:ss a, MMMM dd, yyyy")}, elapsed time ${elapsed}, estimated total time ${expected}

Completed ${completedCount} out of ${totalToDo} index records.

+