You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/04/22 15:42:43 UTC

svn commit: r650521 - in /jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene: MultiIndex.java Recovery.java

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 <code>null</code>. If the
+     * reader is already <code>null</code> this method does nothing. When this
+     * method returns {@link #multiReader} is guaranteed to be <code>null</code>
+     * even if an exception is thrown.
+     * <p/>
+     * 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();
     }
 }