comparison 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
comparison
equal deleted inserted replaced
1550:0dc3be25ad20 1551:9cc4cee39b8b
78 import goodjava.lucene.api.GoodIndexWriter; 78 import goodjava.lucene.api.GoodIndexWriter;
79 import goodjava.lucene.api.LuceneIndexWriter; 79 import goodjava.lucene.api.LuceneIndexWriter;
80 import goodjava.lucene.api.GoodIndexWriterConfig; 80 import goodjava.lucene.api.GoodIndexWriterConfig;
81 import goodjava.lucene.api.LuceneUtils; 81 import goodjava.lucene.api.LuceneUtils;
82 import goodjava.lucene.logging.LoggingIndexWriter; 82 import goodjava.lucene.logging.LoggingIndexWriter;
83 import goodjava.lucene.logging.OpDoer;
83 import goodjava.parser.ParseException; 84 import goodjava.parser.ParseException;
84 import luan.modules.Utils; 85 import luan.modules.Utils;
85 import luan.Luan; 86 import luan.Luan;
86 import luan.LuanTable; 87 import luan.LuanTable;
87 import luan.LuanFunction; 88 import luan.LuanFunction;
767 throws LuanException, IOException 768 throws LuanException, IOException
768 { 769 {
769 writer.addDocument(toLucene(doc)); 770 writer.addDocument(toLucene(doc));
770 } 771 }
771 772
772 public void restore_from_log() 773 public void restore_from_log(LuanFunction handler)
773 throws IOException, LuanException, SQLException, ParseException 774 throws IOException, LuanException, SQLException, ParseException
774 { 775 {
775 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; 776 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer;
776 if( wasCreated && !loggingWriter.wasCreated ) { 777 if( wasCreated && !loggingWriter.wasCreated ) {
777 logger.error("restoring from log"); 778 logger.error("restoring from log");
778 force_restore_from_log(); 779 force_restore_from_log(handler);
779 } 780 }
780 } 781 }
781 782
782 public void force_restore_from_log() 783 public void force_restore_from_log(LuanFunction handler)
783 throws IOException 784 throws IOException
784 { 785 {
785 logger.warn("start force_restore_from_log"); 786 logger.warn("start force_restore_from_log");
786 if( writeLock.isHeldByCurrentThread() ) 787 if( writeLock.isHeldByCurrentThread() )
787 throw new RuntimeException(); 788 throw new RuntimeException();
789 OpDoer opDoer = handler==null ? null : new LuanOpDoer(writer,handler);
788 writeLock.lock(); 790 writeLock.lock();
789 boolean ok = false; 791 boolean ok = false;
790 try { 792 try {
791 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; 793 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer;
792 IndexWriter iw = writer.getLuceneIndexWriter(); 794 IndexWriter iw = writer.getLuceneIndexWriter();
793 iw.deleteAll(); 795 iw.deleteAll();
794 loggingWriter.playLogs(null); 796 loggingWriter.playLogs(opDoer);
795 ok = true; 797 ok = true;
796 wrote(); 798 wrote();
797 ensure_open(); // refresh searcher 799 ensure_open(); // refresh searcher
798 initId(); 800 initId();
799 wasCreated = false; 801 wasCreated = false;