Return-Path: X-Original-To: apmail-lucene-dev-archive@www.apache.org Delivered-To: apmail-lucene-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 877144F7A for ; Wed, 8 Jun 2011 07:14:21 +0000 (UTC) Received: (qmail 55904 invoked by uid 500); 8 Jun 2011 07:14:20 -0000 Delivered-To: apmail-lucene-dev-archive@lucene.apache.org Received: (qmail 55823 invoked by uid 500); 8 Jun 2011 07:14:20 -0000 Mailing-List: contact dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list dev@lucene.apache.org Received: (qmail 55816 invoked by uid 99); 8 Jun 2011 07:14:20 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Jun 2011 07:14:20 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Jun 2011 07:14:18 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id CB16E1077FF for ; Wed, 8 Jun 2011 07:13:58 +0000 (UTC) Date: Wed, 8 Jun 2011 07:13:58 +0000 (UTC) From: "Danny Lade (JIRA)" To: dev@lucene.apache.org Message-ID: <52785270.2437.1307517238828.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1055839646.2426.1307516398792.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Updated] (LUCENE-3180) Can't delete a document using deleteDocument(int docID) if using IndexWriter AND IndexReader MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/LUCENE-3180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Danny Lade updated LUCENE-3180: ------------------------------- Description: It is impossible to delete a document with "reader.deleteDocument(scoreDoc.doc)" yet. using: {code:java} Directory directory = FSDirectory.open(new File("lucene")); writer = new IndexWriter(directory, config); reader = IndexReader.open(writer, true); {code} results in: {code:java} Exception in thread "main" java.lang.UnsupportedOperationException: This IndexReader cannot make any changes to the index (it was opened with readOnly = true) at org.apache.lucene.index.ReadOnlySegmentReader.noWrite(ReadOnlySegmentReader.java:23) at org.apache.lucene.index.ReadOnlyDirectoryReader.acquireWriteLock(ReadOnlyDirectoryReader.java:43) at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067) at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:60) {code} and using: {code:java} Directory directory = FSDirectory.open(new File("lucene")); writer = new IndexWriter(directory, config); reader = IndexReader.open(directory, false); {code} results in: {code:java} org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@S:\Java\Morpheum\lucene\write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:84) at org.apache.lucene.index.DirectoryReader.acquireWriteLock(DirectoryReader.java:765) at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067) at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:69) {code} A workaround is: {code:java} for (ScoreDoc scoreDoc : hits) { Document document = reader.document(scoreDoc.doc); writer.addDocument(document); } writer.deleteDocuments(query); {code} But this is using the query twice and may result in inconsistent data (new added documents may be removed also). On the other hand I can't use the "writer.deleteDocuments(query)" first because I need the documents for some updates. was: It is impossible to delete a document with "reader.deleteDocument(scoreDoc.doc)" yet. using: Directory directory = FSDirectory.open(new File("lucene")); writer = new IndexWriter(directory, config); reader = IndexReader.open(writer, true); results in: Exception in thread "main" java.lang.UnsupportedOperationException: This IndexReader cannot make any changes to the index (it was opened with readOnly = true) at org.apache.lucene.index.ReadOnlySegmentReader.noWrite(ReadOnlySegmentReader.java:23) at org.apache.lucene.index.ReadOnlyDirectoryReader.acquireWriteLock(ReadOnlyDirectoryReader.java:43) at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067) at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:60) and using: Directory directory = FSDirectory.open(new File("lucene")); writer = new IndexWriter(directory, config); reader = IndexReader.open(directory, false); results in: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@S:\Java\Morpheum\lucene\write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:84) at org.apache.lucene.index.DirectoryReader.acquireWriteLock(DirectoryReader.java:765) at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067) at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:69) A workaround is: for (ScoreDoc scoreDoc : hits) { Document document = reader.document(scoreDoc.doc); writer.addDocument(document); } writer.deleteDocuments(query); But this is using the query twice and may result in inconsistent data (new added documents may be removed also). On the other hand I can't use the "writer.deleteDocuments(query)" first because I need the documents for some updates. > Can't delete a document using deleteDocument(int docID) if using IndexWriter AND IndexReader > -------------------------------------------------------------------------------------------- > > Key: LUCENE-3180 > URL: https://issues.apache.org/jira/browse/LUCENE-3180 > Project: Lucene - Java > Issue Type: Bug > Components: core/index > Affects Versions: 3.2 > Environment: Windows > Reporter: Danny Lade > Attachments: ImpossibleLuceneCode.java > > > It is impossible to delete a document with "reader.deleteDocument(scoreDoc.doc)" yet. > using: > {code:java} > Directory directory = FSDirectory.open(new File("lucene")); > > writer = new IndexWriter(directory, config); > reader = IndexReader.open(writer, true); > {code} > results in: > {code:java} > Exception in thread "main" java.lang.UnsupportedOperationException: This IndexReader cannot make any changes to the index (it was opened with readOnly = true) > at org.apache.lucene.index.ReadOnlySegmentReader.noWrite(ReadOnlySegmentReader.java:23) > at org.apache.lucene.index.ReadOnlyDirectoryReader.acquireWriteLock(ReadOnlyDirectoryReader.java:43) > at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067) > at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:60) > {code} > and using: > {code:java} > Directory directory = FSDirectory.open(new File("lucene")); > > writer = new IndexWriter(directory, config); > reader = IndexReader.open(directory, false); > {code} > > results in: > {code:java} > org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@S:\Java\Morpheum\lucene\write.lock > at org.apache.lucene.store.Lock.obtain(Lock.java:84) > at org.apache.lucene.index.DirectoryReader.acquireWriteLock(DirectoryReader.java:765) > at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067) > at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:69) > {code} > A workaround is: > {code:java} > for (ScoreDoc scoreDoc : hits) { > Document document = reader.document(scoreDoc.doc); > writer.addDocument(document); > } > writer.deleteDocuments(query); > {code} > But this is using the query twice and may result in inconsistent data (new added documents may be removed also). > On the other hand I can't use the "writer.deleteDocuments(query)" first because I need the documents for some updates. -- This message is automatically generated by JIRA. 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