From 18b301394a12fca1b452be3d7db73617688e87bb Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Tue, 24 Jan 2017 15:59:10 -0500 Subject: [PATCH] Bug fix --- .../sleuthkit/autopsy/keywordsearch/IndexUpgrader.java | 9 ++++++++- .../autopsy/keywordsearch/SolrSearchService.java | 9 ++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexUpgrader.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexUpgrader.java index ead8609d32..b1bcfb837a 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexUpgrader.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexUpgrader.java @@ -44,30 +44,37 @@ class IndexUpgrader { JAVA_PATH = PlatformUtil.getJavaPath(); } - void performIndexUpgrade(String newIndexDir, Index indexToUpgrade, String tempResultsDir) throws AutopsyService.AutopsyServiceException { + Index performIndexUpgrade(String newIndexDir, Index indexToUpgrade, String tempResultsDir) throws AutopsyService.AutopsyServiceException { // ELTODO Check for cancellation at whatever points are feasible // Run the upgrade tools on the contents (core) in ModuleOutput/keywordsearch/data/solrX_schema_Y/index File tmpDir = Paths.get(tempResultsDir, "IndexUpgrade").toFile(); //NON-NLS tmpDir.mkdirs(); + Index upgradedIndex; double currentSolrVersion = NumberUtils.toDouble(indexToUpgrade.getSolrVersion()); try { // upgrade from Solr 4 to 5 currentSolrVersion = upgradeSolrIndexVersion4to5(currentSolrVersion, newIndexDir, tempResultsDir); // upgrade from Solr 5 to 6 currentSolrVersion = upgradeSolrIndexVersion5to6(currentSolrVersion, newIndexDir, tempResultsDir); + + // create upgraded index object + upgradedIndex = new Index(newIndexDir, Double.toString(currentSolrVersion), indexToUpgrade.getSchemaVersion()); + upgradedIndex.setNewIndex(true); } catch (Exception ex) { // catch-all firewall for exceptions thrown by Solr upgrade tools throw new AutopsyService.AutopsyServiceException("Exception while running Solr index upgrade in " + newIndexDir, ex); //NON-NLS } finally { if (currentSolrVersion != NumberUtils.toDouble(IndexFinder.getCurrentSolrVersion())) { // upgrade did not complete, delete the new index directories + upgradedIndex = null; if (!new File(newIndexDir).delete()) { logger.log(Level.SEVERE, "Unable to delete folder {0}", newIndexDir); //NON-NLS } } } + return upgradedIndex; } /** diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java index 96c2f86ac2..f09b8c3727 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java @@ -216,11 +216,10 @@ public class SolrSearchService implements KeywordSearchService, AutopsyService // upgrade the existing index to the latest supported Solr version IndexUpgrader indexUpgrader = new IndexUpgrader(); - indexUpgrader.performIndexUpgrade(newIndexDir, indexToUpgrade, context.getCase().getTempDirectory()); - - // set the upgraded index as the index to be used for this case - currentVersionIndex = new Index(newIndexDir, IndexFinder.getCurrentSolrVersion(), indexToUpgrade.getSchemaVersion()); - currentVersionIndex.setNewIndex(true); + currentVersionIndex = indexUpgrader.performIndexUpgrade(newIndexDir, indexToUpgrade, context.getCase().getTempDirectory()); + if (currentVersionIndex == null) { + throw new AutopsyServiceException("Unable to upgrade index to the latest version of Solr"); + } } } }