From 748659e78eb3be1e47241f542c65e5f5034e5754 Mon Sep 17 00:00:00 2001 From: Benjamin Gamard Date: Wed, 11 Apr 2018 12:38:03 +0200 Subject: [PATCH] create a single index writer for Lucene + Closes #231 --- .../util/indexing/LuceneIndexingHandler.java | 50 ++++++++----------- .../document/DocumentViewContent.js | 1 - .../src/partial/docs/document.default.html | 4 +- .../partial/docs/document.view.content.html | 8 +-- docs-web/src/main/webapp/src/style/main.less | 35 ++----------- 5 files changed, 28 insertions(+), 70 deletions(-) diff --git a/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java b/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java index b81cddf6..3e53c17e 100644 --- a/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java +++ b/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java @@ -62,6 +62,11 @@ public class LuceneIndexingHandler implements IndexingHandler { */ private DirectoryReader directoryReader; + /** + * Index writer. + */ + private IndexWriter indexWriter; + @Override public boolean accept() { // Embedded Lucene can always start @@ -84,6 +89,12 @@ public class LuceneIndexingHandler implements IndexingHandler { directory = new SimpleFSDirectory(luceneDirectory, NoLockFactory.INSTANCE); } + // Create an index writer + IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer()); + config.setCommitOnClose(true); + config.setMergeScheduler(new SerialMergeScheduler()); + indexWriter = new IndexWriter(directory, config); + // Check index version and rebuild it if necessary if (DirectoryReader.indexExists(directory)) { log.info("Checking index health and version"); @@ -111,6 +122,13 @@ public class LuceneIndexingHandler implements IndexingHandler { log.error("Error closing the index reader", e); } } + if (indexWriter != null) { + try { + indexWriter.close(); + } catch (IOException e) { + log.error("Error closing the index writer, index may be corrupt", e); + } + } if (directory != null) { try { directory.close(); @@ -469,42 +487,16 @@ public class LuceneIndexingHandler implements IndexingHandler { * @param runnable Runnable */ private void handle(LuceneRunnable runnable) { - // Standard analyzer - IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer()); - - // Automatically commit when closing this writer - config.setCommitOnClose(true); - - // Merge sequentially, because Lucene writing is already done asynchronously - config.setMergeScheduler(new SerialMergeScheduler()); - - // Creating index writer - IndexWriter indexWriter = null; - try { - indexWriter = new IndexWriter(directory, config); - } catch (IOException e) { - log.error("Cannot create IndexWriter", e); - } - try { runnable.run(indexWriter); } catch (Exception e) { - log.error("Error in running index writing transaction", e); - try { - if (indexWriter != null) { - indexWriter.rollback(); - } - } catch (IOException e1) { - log.error("Cannot rollback index writing transaction", e1); - } + log.error("Error in running index writing", e); } try { - if (indexWriter != null) { - indexWriter.close(); - } + indexWriter.commit(); } catch (IOException e) { - log.error("Cannot commit and close IndexWriter", e); + log.error("Cannot commit index writer", e); } } diff --git a/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js b/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js index f8f021fe..b90d1fc6 100644 --- a/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js +++ b/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js @@ -11,7 +11,6 @@ angular.module('docs').controller('DocumentViewContent', function ($scope, $root forceHelperSize: true, forcePlaceholderSize: true, tolerance: 'pointer', - handle: '.handle', stop: function () { // Send new positions to server $scope.$apply(function () { diff --git a/docs-web/src/main/webapp/src/partial/docs/document.default.html b/docs-web/src/main/webapp/src/partial/docs/document.default.html index 6fd61a74..811cc531 100644 --- a/docs-web/src/main/webapp/src/partial/docs/document.default.html +++ b/docs-web/src/main/webapp/src/partial/docs/document.default.html @@ -13,10 +13,10 @@
-
{{ file.name }}
-
+
+
{{ file.name }}
diff --git a/docs-web/src/main/webapp/src/partial/docs/document.view.content.html b/docs-web/src/main/webapp/src/partial/docs/document.view.content.html index 974e9286..69b6b474 100644 --- a/docs-web/src/main/webapp/src/partial/docs/document.view.content.html +++ b/docs-web/src/main/webapp/src/partial/docs/document.view.content.html @@ -55,12 +55,8 @@
-
{{ file.name }}
-
-
-
- +
+
{{ file.name }}