You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Michael McCandless (JIRA)" <ji...@apache.org> on 2013/03/20 11:23:15 UTC

[jira] [Commented] (LUCENE-4855) Potential exception in TermInfosWriter#initialize() swallowed makes debugging hard

    [ https://issues.apache.org/jira/browse/LUCENE-4855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13607475#comment-13607475 ] 

Michael McCandless commented on LUCENE-4855:
--------------------------------------------

Hmmm, I'm confused.  That code does this:
{noformat}
    boolean success = false;
    try {
      output.writeInt(FORMAT_CURRENT);              // write format
      output.writeLong(0);                          // leave space for size
      output.writeInt(indexInterval);               // write indexInterval
      output.writeInt(skipInterval);                // write skipInterval
      output.writeInt(maxSkipLevels);               // write maxSkipLevels
      assert initUTF16Results();
      success = true;
    } finally {
      if (!success) {
        IOUtils.closeWhileHandlingException(output);
      }
    }
{noformat}

So any exception inside the try block should then call IOUtils.closeWhileHandlingException, which should suppress any exceptions hit during closing and continue throwing the original exception.

Can you post the full exception?
                
> Potential exception in TermInfosWriter#initialize() swallowed makes debugging hard
> ----------------------------------------------------------------------------------
>
>                 Key: LUCENE-4855
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4855
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/index
>    Affects Versions: 3.6.2
>         Environment: any
>            Reporter: Chris Gioran
>            Priority: Minor
>
> TermInfosWriter#initialize() can potentially fail with an exception when trying to write any of the values in the try block. If that happens the finally clause will be called and that may also fail during close(). This exception will mask the original one potentially hiding the real cause and making debugging such failures difficult.
> My particular case involves failing the first write in the initialize() and close() failing the seek. My code receives:
> Caused by: java.io.IOException: Illegal seek
>         at java.io.RandomAccessFile.seek(Native Method) ~[na:1.6.0_31]
>         at org.apache.lucene.store.FSDirectory$FSIndexOutput.seek(FSDirectory.java:479)
>         at org.apache.lucene.index.TermInfosWriter.close(TermInfosWriter.java:244)
>         at org.apache.lucene.util.IOUtils.close(IOUtils.java:141)
> which provides no indication as to why the initialization failed. The above stack trace has been created with lucene version 3.5.0 but the exception handling is still the same in 3.6.2

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org