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 The search index is not connected. SolrServer.ping() failed.
+ Check startup status page and/or Tomcat logs for more information. 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")}Search Index Status
-<#if worklevel == "IDLE">
+<#if !indexIsConnected>
+
+
+
The search indexer is idle.
<#if hasPreviousBuild??>
-
since ${since?string("hh:mm:ss a, MMMM dd, yyyy")}, elapsed time ${elapsed}
+ <#else> -since ${since?string("hh:mm:ss a, MMMM dd, yyyy")}, elapsed time ${elapsed}, estimated total time ${expected}
Completed ${completedCount} out of ${totalToDo} index records.
+ #if>