comparison src/goodjava/lucene/logging/LoggingIndexWriter.java @ 1487:044a360c2300

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 01 May 2020 16:17:20 -0600
parents 2469aa31f31b
children af55cfad6e12
comparison
equal deleted inserted replaced
1486:2469aa31f31b 1487:044a360c2300
215 Document next() throws IOException { 215 Document next() throws IOException {
216 return i < n ? reader.document(td.scoreDocs[i++].doc) : null; 216 return i < n ? reader.document(td.scoreDocs[i++].doc) : null;
217 } 217 }
218 } 218 }
219 219
220 private volatile boolean isChecking = false;
221
220 public void check(SortField sortField) throws IOException { 222 public void check(SortField sortField) throws IOException {
223 if( isChecking )
224 throw new RuntimeException("another check is running");
221 IndexReader indexReader; 225 IndexReader indexReader;
222 List<LogInputStream> logReaders; 226 List<LogInputStream> logReaders;
223 synchronized(this) { 227 synchronized(this) {
224 if( isMerging ) {
225 logger.warn("is merging, check aborted");
226 return;
227 }
228 isMerging = true;
229 indexReader = indexWriter.openReader(); 228 indexReader = indexWriter.openReader();
230 logReaders = logReaders(logs); 229 logReaders = logReaders(logs);
231 } 230 }
231 isChecking = true;
232 try { 232 try {
233 logger.info("check start"); 233 logger.info("check start");
234 indexWriter.check(); 234 indexWriter.check();
235 File dirFile = new File(logDir,"check"); 235 File dirFile = new File(logDir,"check");
236 IoUtils.deleteRecursively(dirFile); 236 IoUtils.deleteRecursively(dirFile);
292 checkReader.close(); 292 checkReader.close();
293 checkWriter.close(); 293 checkWriter.close();
294 IoUtils.deleteRecursively(dirFile); 294 IoUtils.deleteRecursively(dirFile);
295 logger.info("check done"); 295 logger.info("check done");
296 } finally { 296 } finally {
297 isChecking = false;
297 indexReader.close(); 298 indexReader.close();
298 isNotMerging();
299 } 299 }
300 } 300 }
301 301
302 private static abstract class HashCollector extends GoodCollector { 302 private static abstract class HashCollector extends GoodCollector {
303 int total = 0; 303 int total = 0;