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.

This commit is contained in:
j2blake 2012-09-26 16:02:27 +00:00
parent eb1d4b9631
commit 9cdffd0c09
2 changed files with 36 additions and 6 deletions

View file

@ -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<String> 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";
}
}