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