This commit is contained in:
adam-m 2012-05-17 15:04:45 -04:00
commit ce7482db74

View File

@ -81,8 +81,7 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
public enum IngestStatus { public enum IngestStatus {
INGESTED, EXTRACTED_INGESTED, SKIPPED, INGESTED, EXTRACTED_INGESTED, SKIPPED,};
};
private Map<Long, IngestStatus> ingestStatus; private Map<Long, IngestStatus> ingestStatus;
public static synchronized KeywordSearchIngestService getDefault() { public static synchronized KeywordSearchIngestService getDefault() {
@ -548,6 +547,7 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
for (Keyword keywordQuery : keywords) { for (Keyword keywordQuery : keywords) {
if (this.isCancelled()) { if (this.isCancelled()) {
logger.log(Level.INFO, "Cancel detected, bailing before new keyword processed: " + keywordQuery.getQuery()); logger.log(Level.INFO, "Cancel detected, bailing before new keyword processed: " + keywordQuery.getQuery());
finalizeSearcher();
return null; return null;
} }
final String queryStr = keywordQuery.getQuery(); final String queryStr = keywordQuery.getQuery();
@ -577,9 +577,12 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
//no reason to continue with next query if recovery failed //no reason to continue with next query if recovery failed
//or wait for recovery to kick in and run again later //or wait for recovery to kick in and run again later
//likely case has closed and threads are being interrupted //likely case has closed and threads are being interrupted
finalizeSearcher();
return null; return null;
} catch (CancellationException e) { } catch (CancellationException e) {
logger.log(Level.INFO, "Cancel detected, bailing during keyword query: " + keywordQuery.getQuery()); logger.log(Level.INFO, "Cancel detected, bailing during keyword query: " + keywordQuery.getQuery());
finalizeSearcher();
return null; return null;
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.WARNING, "Error performing query: " + keywordQuery.getQuery(), e); logger.log(Level.WARNING, "Error performing query: " + keywordQuery.getQuery(), e);
@ -624,6 +627,7 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
Map<FsContent, Integer> contentHitsFlattened = ContentHit.flattenResults(contentHitsAll); Map<FsContent, Integer> contentHitsFlattened = ContentHit.flattenResults(contentHitsAll);
for (final FsContent hitFile : contentHitsFlattened.keySet()) { for (final FsContent hitFile : contentHitsFlattened.keySet()) {
if (this.isCancelled()) { if (this.isCancelled()) {
finalizeSearcher();
return null; return null;
} }
@ -635,6 +639,7 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
} catch (NoOpenCoreException e) { } catch (NoOpenCoreException e) {
logger.log(Level.WARNING, "Error querying snippet: " + snippetQuery, e); logger.log(Level.WARNING, "Error querying snippet: " + snippetQuery, e);
//no reason to continie //no reason to continie
finalizeSearcher();
return null; return null;
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.WARNING, "Error querying snippet: " + snippetQuery, e); logger.log(Level.WARNING, "Error querying snippet: " + snippetQuery, e);
@ -730,24 +735,19 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
} }
progress.progress(queryStr, ++numSearched); progress.progress(queryStr, ++numSearched);
} }
finalizeSearcher();
} //end synchronized block } //end synchronized block
return null; return null;
} }
@Override //perform all essential cleanup that needs to be done right AFTER doInBackground() returns
protected void done() { //without relying on done() method that is not guaranteed to run after background threads competes
try { //NEED to call this method always right before doInBackground() returns
super.get(); //block and get all exceptions thrown while doInBackground() private void finalizeSearcher() {
} catch (Exception ex) {
logger.log(Level.WARNING, "Searcher exceptions occurred, while in background. ", ex);
} finally {
searcherDone = true; //next currentSearcher can start searcherDone = true; //next currentSearcher can start
progress.finish();
logger.log(Level.INFO, "Searcher done");
if (finalRun) { if (finalRun) {
logger.log(Level.INFO, "The final searcher in this ingest done."); logger.log(Level.INFO, "The final searcher in this ingest done.");
finalRunComplete = true; finalRunComplete = true;
@ -757,6 +757,11 @@ public final class KeywordSearchIngestService implements IngestServiceFsContent
managerProxy.postMessage(IngestMessage.createMessage(++messageID, MessageType.INFO, KeywordSearchIngestService.instance, "Completed")); managerProxy.postMessage(IngestMessage.createMessage(++messageID, MessageType.INFO, KeywordSearchIngestService.instance, "Completed"));
} }
} }
@Override
protected void done() {
logger.log(Level.INFO, "Searcher done()");
progress.finish();
} }
} }