Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 73445 invoked from network); 22 Apr 2008 13:43:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Apr 2008 13:43:08 -0000 Received: (qmail 63189 invoked by uid 500); 22 Apr 2008 13:43:10 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 63110 invoked by uid 500); 22 Apr 2008 13:43:09 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 63099 invoked by uid 99); 22 Apr 2008 13:43:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Apr 2008 06:43:09 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Apr 2008 13:42:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 940181A9832; Tue, 22 Apr 2008 06:42:46 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r650521 - in /jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene: MultiIndex.java Recovery.java Date: Tue, 22 Apr 2008 13:42:43 -0000 To: commits@jackrabbit.apache.org From: jukka@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080422134246.940181A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jukka Date: Tue Apr 22 06:42:34 2008 New Revision: 650521 URL: http://svn.apache.org/viewvc?rev=650521&view=rev Log: 1.4: Merged revision 647796 (JCR-1536) Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java?rev=650521&r1=650520&r2=650521&view=diff ============================================================================== --- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java (original) +++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java Tue Apr 22 06:42:34 2008 @@ -434,10 +434,7 @@ synchronized (updateMonitor) { updateInProgress = false; updateMonitor.notifyAll(); - if (multiReader != null) { - multiReader.close(); - multiReader = null; - } + closeMultiReader(); } } } @@ -500,10 +497,7 @@ synchronized (updateMonitor) { updateInProgress = false; updateMonitor.notifyAll(); - if (multiReader != null) { - multiReader.close(); - multiReader = null; - } + closeMultiReader(); } } return num; @@ -671,10 +665,7 @@ synchronized (updateMonitor) { updateInProgress = false; updateMonitor.notifyAll(); - if (multiReader != null) { - multiReader.close(); - multiReader = null; - } + closeMultiReader(); } } } @@ -750,13 +741,10 @@ flushTask.cancel(); // commit / close indexes - if (multiReader != null) { - try { - multiReader.close(); - } catch (IOException e) { - log.error("Exception while closing search index.", e); - } - multiReader = null; + try { + closeMultiReader(); + } catch (IOException e) { + log.error("Exception while closing search index.", e); } try { flush(); @@ -897,6 +885,28 @@ attemptDelete(); } + /** + * Closes the {@link #multiReader} and sets it null. If the + * reader is already null this method does nothing. When this + * method returns {@link #multiReader} is guaranteed to be null + * even if an exception is thrown. + *

+ * Please note that this method does not take care of any synchronization. + * A caller must ensure that it is the only thread operating on this multi + * index, or that it holds the {@link #updateMonitor}. + * + * @throws IOException if an error occurs while closing the reader. + */ + void closeMultiReader() throws IOException { + if (multiReader != null) { + try { + multiReader.close(); + } finally { + multiReader = null; + } + } + } + //-------------------------< internal >------------------------------------- private void scheduleFlushTask() { @@ -1114,10 +1124,7 @@ synchronized (updateMonitor) { updateInProgress = false; updateMonitor.notifyAll(); - if (multiReader != null) { - multiReader.close(); - multiReader = null; - } + closeMultiReader(); } } } Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java?rev=650521&r1=650520&r2=650521&view=diff ============================================================================== --- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java (original) +++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java Tue Apr 22 06:42:34 2008 @@ -170,5 +170,6 @@ // now we are consistent again -> flush index.flush(); + index.closeMultiReader(); } }