[
https://issues.apache.org/jira/browse/LUCENE-5058?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian updated LUCENE-5058:
------------------------------
Description:
I have a small test prog which inserts some data in an index and after that,
opens a searcher from the uncommitted index to search on and output the result
to std.out. The Searcher is immediately closed. Then, i call deleteAll() on the
index but it encounters an IOException stating that the index files could not
be removed. I have investigated with Sysinternals and it says the file is still
locked despite the fact that the index searcher is correctly closed. If i call
deleteAll() without opening a searcher before it just works fine as expected.
This seems to be a bug in Lucene, since closing the index searcher makes it
impossible to delete the index.
Here is the source code:
{code:title=Bar.java|borderStyle=solid}
public class LuceneTest {
private Directory dir;
private IndexWriter writer;
public void addDocs(long value) throws IOException {
Document doc = new Document();
doc.add(new LongField("ID", value, Field.Store.YES));
writer.deleteDocuments(new Term("ID", "1"));
writer.addDocument(doc);
}
public void search() throws IOException {
IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(writer,
false));
TopDocs results = searcher.search(NumericRangeQuery.newLongRange("ID",
1L, 2L, true, true), 1);
for ( ScoreDoc sc : results.scoreDocs) {
System.out.println(searcher.doc(sc.doc));
}
searcher.getIndexReader().close();
}
public static void main(String[] args) throws IOException {
new LuceneTest();
}
public LuceneTest() throws IOException {
dir = FSDirectory.open(new File("test"));
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, new
StandardAnalyzer(Version.LUCENE_43));
config.setInfoStream(System.out);
writer = new IndexWriter(dir, config);
addDocs(1L);
search();
//writer.commit(); -- If i call commit after search, then no
IOException occurrs!
writer.deleteAll();
}
}
{code}
was:
I have a small test prog which inserts some data in an index and after that,
opens a searcher from the uncommitted index to search on and output the result
to std.out. The Searcher is immediately closed. Then, i call deleteAll() on the
index but it encounters an IOException stating that the index files could not
be removed. I have investigated with Sysinternals and it says the file is still
locked despite the fact that the index searcher is correctly closed. If i call
deleteAll() without opening a searcher before it just works fine as expected.
This seems to be a bug in Lucene, since closing the index searcher makes it
impossible to delete the index.
Here is the source code:
<source>
public class LuceneTest {
private Directory dir;
private IndexWriter writer;
public void addDocs(long value) throws IOException {
Document doc = new Document();
doc.add(new LongField("ID", value, Field.Store.YES));
writer.deleteDocuments(new Term("ID", "1"));
writer.addDocument(doc);
}
public void search() throws IOException {
IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(writer,
false));
TopDocs results = searcher.search(NumericRangeQuery.newLongRange("ID",
1L, 2L, true, true), 1);
for ( ScoreDoc sc : results.scoreDocs) {
System.out.println(searcher.doc(sc.doc));
}
searcher.getIndexReader().close();
}
public static void main(String[] args) throws IOException {
new LuceneTest();
}
public LuceneTest() throws IOException {
dir = FSDirectory.open(new File("test"));
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, new
StandardAnalyzer(Version.LUCENE_43));
config.setInfoStream(System.out);
writer = new IndexWriter(dir, config);
addDocs(1L);
search();
//writer.commit(); -- If i call commit after search, then no
IOException occurrs!
writer.deleteAll();
}
}
</source>
> IOException when trying to delete data from index
> -------------------------------------------------
>
> Key: LUCENE-5058
> URL: https://issues.apache.org/jira/browse/LUCENE-5058
> Project: Lucene - Core
> Issue Type: Bug
> Components: core/index
> Affects Versions: 4.3
> Environment: Windows 7
> Reporter: Christian
>
> I have a small test prog which inserts some data in an index and after that,
> opens a searcher from the uncommitted index to search on and output the
> result to std.out. The Searcher is immediately closed. Then, i call
> deleteAll() on the index but it encounters an IOException stating that the
> index files could not be removed. I have investigated with Sysinternals and
> it says the file is still locked despite the fact that the index searcher is
> correctly closed. If i call deleteAll() without opening a searcher before it
> just works fine as expected. This seems to be a bug in Lucene, since closing
> the index searcher makes it impossible to delete the index.
> Here is the source code:
> {code:title=Bar.java|borderStyle=solid}
> public class LuceneTest {
> private Directory dir;
> private IndexWriter writer;
>
> public void addDocs(long value) throws IOException {
> Document doc = new Document();
> doc.add(new LongField("ID", value, Field.Store.YES));
> writer.deleteDocuments(new Term("ID", "1"));
> writer.addDocument(doc);
> }
>
> public void search() throws IOException {
> IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(writer,
> false));
> TopDocs results =
> searcher.search(NumericRangeQuery.newLongRange("ID", 1L, 2L, true, true), 1);
>
> for ( ScoreDoc sc : results.scoreDocs) {
> System.out.println(searcher.doc(sc.doc));
> }
>
> searcher.getIndexReader().close();
> }
> public static void main(String[] args) throws IOException {
> new LuceneTest();
> }
>
> public LuceneTest() throws IOException {
> dir = FSDirectory.open(new File("test"));
> IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43,
> new StandardAnalyzer(Version.LUCENE_43));
> config.setInfoStream(System.out);
> writer = new IndexWriter(dir, config);
>
> addDocs(1L);
> search();
> //writer.commit(); -- If i call commit after search, then no
> IOException occurrs!
>
> writer.deleteAll();
> }
> }
> {code}
--
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: [email protected]
For additional commands, e-mail: [email protected]