VIVO-981 An indexing task must never return null status.

This commit is contained in:
Jim Blake 2015-02-27 15:22:38 -05:00
parent 2b83e30866
commit 7414084fee
5 changed files with 28 additions and 13 deletions

View file

@ -127,6 +127,13 @@ public class IndexController extends FreemarkerHttpServlet {
switch (RequestType.fromRequest(vreq)) {
case REBUILD:
requestRebuild();
try {
// Pause, giving a chance to start the task queue.
Thread.sleep(1000);
} catch (InterruptedException e) {
// Don't care, so pass it along.
Thread.currentThread().interrupt();
}
return new RedirectResponseValues(PAGE_URL);
default:
return showDisplay();

View file

@ -47,6 +47,11 @@ public class IndexingUriFinderListBasic implements IndexingUriFinderList {
Set<String> uris = new HashSet<>();
for (IndexingUriFinder uriFinder : finders) {
List<String> additions = uriFinder.findAdditionalURIsToIndex(stmt);
if (log.isDebugEnabled() && !additions.isEmpty()) {
log.debug(uriFinder + " found " + additions.size()
+ " additions " + additions + " for this statement "
+ stmt);
}
for (String addition : additions) {
if (addition == null) {
log.warn("Finder " + uriFinder + " returned a null URI.");

View file

@ -56,7 +56,7 @@ public class RebuildIndexTask implements Task {
@Override
public SearchIndexerStatus getStatus() {
return impl == null ? null : impl.getStatus();
return impl == null ? SearchIndexerStatus.idle() : impl.getStatus();
}
@Override

View file

@ -69,7 +69,7 @@ public class UpdateStatementsTask implements Task {
}
@Override
public SearchIndexerStatus getStatus() {
return impl == null ? null : impl.getStatus();
return impl == null ? SearchIndexerStatus.idle() : impl.getStatus();
}
@Override

View file

@ -62,10 +62,13 @@ public class UpdateUrisTask implements Task {
this.uris = new HashSet<>(uris);
}
static void runNow(Collection<String> uris, SearchIndexExcluderList excluders, DocumentModifierList modifiers, IndividualDao indDao, ListenerList listeners, WorkerThreadPool pool) {
UpdateUrisTaskImpl impl = new UpdateUrisTaskImpl(uris, excluders, modifiers, indDao, listeners, pool);
impl.run();
}
static void runNow(Collection<String> uris,
SearchIndexExcluderList excluders, DocumentModifierList modifiers,
IndividualDao indDao, ListenerList listeners, WorkerThreadPool pool) {
UpdateUrisTaskImpl impl = new UpdateUrisTaskImpl(uris, excluders,
modifiers, indDao, listeners, pool);
impl.run();
}
@Override
public void run() {
@ -75,11 +78,7 @@ public class UpdateUrisTask implements Task {
@Override
public SearchIndexerStatus getStatus() {
if (impl != null) {
return impl.getStatus();
}
return new SearchIndexerStatus(PROCESSING_URIS, since, new UriCounts(0, 0, 0, uris.size(), uris.size()));
return (impl == null) ? SearchIndexerStatus.idle() : impl.getStatus();
}
@Override
@ -113,8 +112,12 @@ public class UpdateUrisTask implements Task {
this.searchEngine = ApplicationUtils.instance().getSearchEngine();
}
public UpdateUrisTaskImpl(Collection<String> uris, SearchIndexExcluderList excluders, DocumentModifierList modifiers, IndividualDao indDao, ListenerList listeners, WorkerThreadPool pool) {
this.uris = uris;
public UpdateUrisTaskImpl(Collection<String> uris,
SearchIndexExcluderList excluders,
DocumentModifierList modifiers, IndividualDao indDao,
ListenerList listeners, WorkerThreadPool pool) {
log.debug("Updating " + uris.size() + " uris.");
this.uris = uris;
this.excluders = excluders;
this.modifiers = modifiers;
this.indDao = indDao;