Mercurial Hosting > luan
diff src/luan/modules/lucene/LuceneIndex.java @ 1551:9cc4cee39b8b
add LuanOpDoer
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 04 Oct 2020 16:29:54 -0600 |
parents | 736ec76bbf42 |
children | 26c51acf00f3 |
line wrap: on
line diff
--- a/src/luan/modules/lucene/LuceneIndex.java Sat Oct 03 23:08:36 2020 -0600 +++ b/src/luan/modules/lucene/LuceneIndex.java Sun Oct 04 16:29:54 2020 -0600 @@ -80,6 +80,7 @@ import goodjava.lucene.api.GoodIndexWriterConfig; import goodjava.lucene.api.LuceneUtils; import goodjava.lucene.logging.LoggingIndexWriter; +import goodjava.lucene.logging.OpDoer; import goodjava.parser.ParseException; import luan.modules.Utils; import luan.Luan; @@ -769,29 +770,30 @@ writer.addDocument(toLucene(doc)); } - public void restore_from_log() + public void restore_from_log(LuanFunction handler) throws IOException, LuanException, SQLException, ParseException { LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; if( wasCreated && !loggingWriter.wasCreated ) { logger.error("restoring from log"); - force_restore_from_log(); + force_restore_from_log(handler); } } - public void force_restore_from_log() + public void force_restore_from_log(LuanFunction handler) throws IOException { logger.warn("start force_restore_from_log"); if( writeLock.isHeldByCurrentThread() ) throw new RuntimeException(); + OpDoer opDoer = handler==null ? null : new LuanOpDoer(writer,handler); writeLock.lock(); boolean ok = false; try { LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; IndexWriter iw = writer.getLuceneIndexWriter(); iw.deleteAll(); - loggingWriter.playLogs(null); + loggingWriter.playLogs(opDoer); ok = true; wrote(); ensure_open(); // refresh searcher