Mailing List Archive

NullPointerException on writer.close()
Hello. I'm pretty new to Lucene. I've had good luck so far, but o bug
just cropped up in the code I use to make indexes. I'm using rc4 and
(sorry) did not change the code; I just noticed my indexes failing...

anyway, here's the relevant segment...I know that the file path is
valid, and files _are_ getting created updated there -- I checked the
timestamps.

Also, I'm confused about the create boolean in the IndexWriter
constructor -- should it be true for false when updating existing
entries in an
existing index.

public void makeIndex() throws IOException, NestedException {
this.logDebug("Creating index in " + this.getIndexFileName());
IndexWriter writer = new
IndexWriter(this.getIndexFileName(),new StandardAnalyzer(), false); //I
was using 'true' changed to false
//for debugging, to no effect
// <cut>full text below, for those interested</cut>

try {
for (int i=0; i < projects.length; i++) {
this.logDebug("Adding project " +
projects[i].getId() + " [" + projects[i].getDisplayName() + "] to
index");
Document d = this.makeProjectDocument(projects[i]);
writer.addDocument(d);
this.logDebug("Done adding project " +
projects[i].getId() + " to index.");

}
this.logDebug("Done processing vsp information for lucene
search index, about to finalize index.");
} catch (RuntimeException re) {
this.logError("Unexpected error writing index!", re);
throw(re);
} finally {
writer.optimize();
this.logDebug("index optimized...closing");
writer.close(); //*** THIS IS WHERE THE EXCEPTION GETS THROWN
this.logDebug("Index closed; done writing lucene index.");
}
}


I looked at the the IndexWriter.close() method, and it seems like
ramDirectory, directory or writeLock need to be null o make this happen.

Anyway, any advice would be greatly appreciated.

best
eric


-- full method listing
public void makeIndex() throws IOException, NestedException {
this.logDebug("Creating index in " + this.getIndexFileName());
IndexWriter writer = new
IndexWriter(this.getIndexFileName(),new StandardAnalyzer(), false);
//get projects/activities, make docs for each...
Project[] projects = null;
try {
projects = this.getProjectService().getProjectsById(null);
} catch (Exception e) {
String msg = "Can't get projects for indexing, aborting";
this.logError(msg,e);
throw new NestedException(msg,e);
} finally {
writer.close();
}

try {
for (int i=0; i < projects.length; i++) {
//Project project = projects[i];
this.logDebug("Adding project " +
projects[i].getId() + " [" + projects[i].getDisplayName() + "] to
index");
Document d = this.makeProjectDocument(projects[i]);
writer.addDocument(d);
this.logDebug("Done adding project " +
projects[i].getId() + " to index.");

}
this.logDebug("Done processing vsp information for lucene
search index, about to finalize index.");
} catch (RuntimeException re) {
this.logError("Unexpected error writing index!", re);
throw(re);
} finally {
writer.optimize();
this.logDebug("index optimized...closing");
writer.close();
this.logDebug("Index closed; done writing lucene index.");
}
}


--
To unsubscribe, e-mail: <mailto:lucene-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:lucene-user-help@jakarta.apache.org>
Re: NullPointerException on writer.close() [ In reply to ]
Eric,

Please send the exception stack trace with line numbers, it would help
a great deal.

Otis


--- Eric Fixler <fix@idiom.com> wrote:
> Hello. I'm pretty new to Lucene. I've had good luck so far, but o
> bug
> just cropped up in the code I use to make indexes. I'm using rc4 and
>
> (sorry) did not change the code; I just noticed my indexes failing...
>
> anyway, here's the relevant segment...I know that the file path is
> valid, and files _are_ getting created updated there -- I checked the
>
> timestamps.
>
> Also, I'm confused about the create boolean in the IndexWriter
> constructor -- should it be true for false when updating existing
> entries in an
> existing index.
>
> public void makeIndex() throws IOException, NestedException {
> this.logDebug("Creating index in " + this.getIndexFileName());
> IndexWriter writer = new
> IndexWriter(this.getIndexFileName(),new StandardAnalyzer(), false);
> //I
> was using 'true' changed to false
> //for debugging, to no effect
> // <cut>full text below, for those interested</cut>
>
> try {
> for (int i=0; i < projects.length; i++) {
> this.logDebug("Adding project " +
> projects[i].getId() + " [" + projects[i].getDisplayName() + "] to
> index");
> Document d = this.makeProjectDocument(projects[i]);
> writer.addDocument(d);
> this.logDebug("Done adding project " +
> projects[i].getId() + " to index.");
>
> }
> this.logDebug("Done processing vsp information for lucene
> search index, about to finalize index.");
> } catch (RuntimeException re) {
> this.logError("Unexpected error writing index!", re);
> throw(re);
> } finally {
> writer.optimize();
> this.logDebug("index optimized...closing");
> writer.close(); //*** THIS IS WHERE THE EXCEPTION GETS THROWN
> this.logDebug("Index closed; done writing lucene index.");
> }
> }
>
>
> I looked at the the IndexWriter.close() method, and it seems like
> ramDirectory, directory or writeLock need to be null o make this
> happen.
>
> Anyway, any advice would be greatly appreciated.
>
> best
> eric
>
>
> -- full method listing
> public void makeIndex() throws IOException, NestedException {
> this.logDebug("Creating index in " + this.getIndexFileName());
> IndexWriter writer = new
> IndexWriter(this.getIndexFileName(),new StandardAnalyzer(), false);
> //get projects/activities, make docs for each...
> Project[] projects = null;
> try {
> projects = this.getProjectService().getProjectsById(null);
> } catch (Exception e) {
> String msg = "Can't get projects for indexing, aborting";
> this.logError(msg,e);
> throw new NestedException(msg,e);
> } finally {
> writer.close();
> }
>
> try {
> for (int i=0; i < projects.length; i++) {
> //Project project = projects[i];
> this.logDebug("Adding project " +
> projects[i].getId() + " [" + projects[i].getDisplayName() + "] to
> index");
> Document d = this.makeProjectDocument(projects[i]);
> writer.addDocument(d);
> this.logDebug("Done adding project " +
> projects[i].getId() + " to index.");
>
> }
> this.logDebug("Done processing vsp information for lucene
> search index, about to finalize index.");
> } catch (RuntimeException re) {
> this.logError("Unexpected error writing index!", re);
> throw(re);
> } finally {
> writer.optimize();
> this.logDebug("index optimized...closing");
> writer.close();
> this.logDebug("Index closed; done writing lucene index.");
> }
> }
>
>
> --
> To unsubscribe, e-mail:
> <mailto:lucene-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:lucene-user-help@jakarta.apache.org>
>


__________________________________________________
Do You Yahoo!?
Yahoo! Greetings - Send FREE e-cards for every occasion!
http://greetings.yahoo.com

--
To unsubscribe, e-mail: <mailto:lucene-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:lucene-user-help@jakarta.apache.org>
Re: NullPointerException on writer.close() [ In reply to ]
I was hoping this mail didn't go the list -- the bug was totally mine
and it was really stupid! I had high hopes that since I sent it from
the wrong e-mail account, it would get spam filtered and I wouldn't be
exposed; oh well.

There was an extra index.close() in a finally block that should've been
in a catch block. I've been a bit overworked and was staring at this
for about 2 hours without seeing it -- I doscovered i about 2 seconds
after sending the mail.

Anyway, thanks and sorry...

eric




On Tuesday, February 26, 2002, at 11:47 AM, Otis Gospodnetic wrote:

> Eric,
>
> Please send the exception stack trace with line numbers, it would help
> a great deal.
>
> Otis
>
>
> --- Eric Fixler <fix@idiom.com> wrote:
>> Hello. I'm pretty new to Lucene. I've had good luck so far, but o
>> bug
>> just cropped up in the code I use to make indexes. I'm using rc4 and
>>
>> (sorry) did not change the code; I just noticed my indexes failing...
>>
>> anyway, here's the relevant segment...I know that the file path is
>> valid, and files _are_ getting created updated there -- I checked the
>>
>> timestamps.
>>
>> Also, I'm confused about the create boolean in the IndexWriter
>> constructor -- should it be true for false when updating existing
>> entries in an
>> existing index.
>>
>> public void makeIndex() throws IOException, NestedException {
>> this.logDebug("Creating index in " + this.getIndexFileName());
>> IndexWriter writer = new
>> IndexWriter(this.getIndexFileName(),new StandardAnalyzer(), false);
>> //I
>> was using 'true' changed to false
>> //for debugging, to no effect
>> // <cut>full text below, for those interested</cut>
>>
>> try {
>> for (int i=0; i < projects.length; i++) {
>> this.logDebug("Adding project " +
>> projects[i].getId() + " [" + projects[i].getDisplayName() + "] to
>> index");
>> Document d = this.makeProjectDocument(projects[i]);
>> writer.addDocument(d);
>> this.logDebug("Done adding project " +
>> projects[i].getId() + " to index.");
>>
>> }
>> this.logDebug("Done processing vsp information for lucene
>> search index, about to finalize index.");
>> } catch (RuntimeException re) {
>> this.logError("Unexpected error writing index!", re);
>> throw(re);
>> } finally {
>> writer.optimize();
>> this.logDebug("index optimized...closing");
>> writer.close(); //*** THIS IS WHERE THE EXCEPTION GETS THROWN
>> this.logDebug("Index closed; done writing lucene index.");
>> }
>> }
>>
>>
>> I looked at the the IndexWriter.close() method, and it seems like
>> ramDirectory, directory or writeLock need to be null o make this
>> happen.
>>
>> Anyway, any advice would be greatly appreciated.
>>
>> best
>> eric
>>
>>
>> -- full method listing
>> public void makeIndex() throws IOException, NestedException {
>> this.logDebug("Creating index in " + this.getIndexFileName());
>> IndexWriter writer = new
>> IndexWriter(this.getIndexFileName(),new StandardAnalyzer(), false);
>> //get projects/activities, make docs for each...
>> Project[] projects = null;
>> try {
>> projects = this.getProjectService().getProjectsById(null);
>> } catch (Exception e) {
>> String msg = "Can't get projects for indexing, aborting";
>> this.logError(msg,e);
>> throw new NestedException(msg,e);
>> } finally {
>> writer.close();
>> }
>>
>> try {
>> for (int i=0; i < projects.length; i++) {
>> //Project project = projects[i];
>> this.logDebug("Adding project " +
>> projects[i].getId() + " [" + projects[i].getDisplayName() + "] to
>> index");
>> Document d = this.makeProjectDocument(projects[i]);
>> writer.addDocument(d);
>> this.logDebug("Done adding project " +
>> projects[i].getId() + " to index.");
>>
>> }
>> this.logDebug("Done processing vsp information for lucene
>> search index, about to finalize index.");
>> } catch (RuntimeException re) {
>> this.logError("Unexpected error writing index!", re);
>> throw(re);
>> } finally {
>> writer.optimize();
>> this.logDebug("index optimized...closing");
>> writer.close();
>> this.logDebug("Index closed; done writing lucene index.");
>> }
>> }
>>
>>
>> --
>> To unsubscribe, e-mail:
>> <mailto:lucene-user-unsubscribe@jakarta.apache.org>
>> For additional commands, e-mail:
>> <mailto:lucene-user-help@jakarta.apache.org>
>>
>
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Greetings - Send FREE e-cards for every occasion!
> http://greetings.yahoo.com
>
> --
> To unsubscribe, e-mail: <mailto:lucene-user-
> unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:lucene-user-
> help@jakarta.apache.org>
>


--
To unsubscribe, e-mail: <mailto:lucene-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:lucene-user-help@jakarta.apache.org>