JC created LUCENE-7775:
--------------------------

             Summary: Throwable not processed
                 Key: LUCENE-7775
                 URL: https://issues.apache.org/jira/browse/LUCENE-7775
             Project: Lucene - Core
          Issue Type: Bug
          Components: core/index
            Reporter: JC
            Priority: Trivial


Hi

In recent github morror (lucene-solr), I've found the following suspicious code 
by Findbugs. 

lucene/core/src/java/org/apache/lucene/index/BufferedUpdatesStream.java

{code}
436   /** Close segment states previously opened with openSegmentStates. */
437   private ApplyDeletesResult closeSegmentStates(IndexWriter.ReaderPool 
pool, SegmentState[] s    egStates, boolean success, long gen) throws 
IOException {
438     int numReaders = segStates.length;
439     Throwable firstExc = null;
440     List<SegmentCommitInfo> allDeleted = null;
441     long totDelCount = 0;
442     for (int j=0;j<numReaders;j++) {
443       SegmentState segState = segStates[j];
444       if (success) {
445         totDelCount += segState.rld.getPendingDeleteCount() - 
segState.startDelCount;
446         segState.reader.getSegmentInfo().setBufferedDeletesGen(gen);
447         int fullDelCount = segState.rld.info.getDelCount() + 
segState.rld.getPendingDeleteCou    nt();
448         assert fullDelCount <= segState.rld.info.info.maxDoc();
449         if (fullDelCount == segState.rld.info.info.maxDoc()) {
450           if (allDeleted == null) {
451             allDeleted = new ArrayList<>();
452           }
453           allDeleted.add(segState.reader.getSegmentInfo());
454         }
455       }
456       try {
457         segStates[j].finish(pool);
458       } catch (Throwable th) {
459         if (firstExc != null) {
460           firstExc = th;
461         }
462       }
463     }
464 
465     if (success) {
466       // Does nothing if firstExc is null:
467       IOUtils.reThrow(firstExc);
468     }
{code}

In Line 459, firstExc seems always null. So, Line 460 never be reached. Would 
Line 459 be like this (firstExc is assigned only once when it is null)?:
{code}
459         if (firstExc == null) {
{code} 

Similar issue is in Line 88 
 of lucene/core/src/java/org/apache/lucene/index/SegmentDocValues.java as well.

{code}
 80   synchronized void decRef(List<Long> dvProducersGens) throws IOException {
 81     Throwable t = null;
 82     for (Long gen : dvProducersGens) {
 83       RefCount<DocValuesProducer> dvp = genDVProducers.get(gen);
 84       assert dvp != null : "gen=" + gen;
 85       try {
 86         dvp.decRef();
 87       } catch (Throwable th) {
 88         if (t != null) {
 89           t = th;
 90         }
 91       }
 92     }
 93     if (t != null) {
 94       IOUtils.reThrow(t);
 95     }
 96   }
{code}

This might be just a trivial thing but I thought it is worth to report just in 
case. Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to