Mercurial Hosting > luan
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; |