You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2009/03/02 17:43:42 UTC
svn commit: r749352 - in /lucene/java/branches/lucene_2_4: ./ CHANGES.txt
src/java/org/apache/lucene/analysis/Analyzer.java
Author: mikemccand
Date: Mon Mar 2 16:43:42 2009
New Revision: 749352
URL: http://svn.apache.org/viewvc?rev=749352&view=rev
Log:
LUCENE-1186: add Analyzer.close() to close the internal ThreadLocal
Modified:
lucene/java/branches/lucene_2_4/ (props changed)
lucene/java/branches/lucene_2_4/CHANGES.txt
lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/Analyzer.java
Propchange: lucene/java/branches/lucene_2_4/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Mar 2 16:43:42 2009
@@ -1 +1 @@
-/lucene/java/trunk:708549,709456,712233,718540,719716,723149,734415,735043,746661,747251
+/lucene/java/trunk:708549,709456,712233,718540,719716,723149,734415,735043,746661,747251,748534,749326
Modified: lucene/java/branches/lucene_2_4/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_4/CHANGES.txt?rev=749352&r1=749351&r2=749352&view=diff
==============================================================================
--- lucene/java/branches/lucene_2_4/CHANGES.txt (original)
+++ lucene/java/branches/lucene_2_4/CHANGES.txt Mon Mar 2 16:43:42 2009
@@ -3,6 +3,9 @@
======================= 2.4.x branch (not yet released) =======================
+9. LUCENE-1186: Add Analyzer.close() to free internal ThreadLocal
+ resources. (Christian Kohlschütter via Mike McCandless)
+
Bug fixes
1. LUCENE-1452: Fixed silent data-loss case whereby binary fields are
@@ -55,6 +58,9 @@
if the max slop was exceeded; The wrong payload could be returned in
certain situations. (Jonathan Mamou, Greg Shackles, Mark Miller)
+14. LUCENE-1186: Add Analyzer.close() to free internal ThreadLocal
+ resources. (Christian Kohlschütter via Mike McCandless)
+
======================= Release 2.4.0 2008-10-06 =======================
Changes in backwards compatibility policy
Modified: lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/Analyzer.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/Analyzer.java?rev=749352&r1=749351&r2=749352&view=diff
==============================================================================
--- lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/Analyzer.java (original)
+++ lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/Analyzer.java Mon Mar 2 16:43:42 2009
@@ -20,6 +20,9 @@
import java.io.Reader;
import java.io.IOException;
+import org.apache.lucene.util.CloseableThreadLocal;
+import org.apache.lucene.store.AlreadyClosedException;
+
/** An Analyzer builds TokenStreams, which analyze text. It thus represents a
* policy for extracting index terms from text.
* <p>
@@ -44,20 +47,36 @@
return tokenStream(fieldName, reader);
}
- private ThreadLocal tokenStreams = new ThreadLocal();
+ private CloseableThreadLocal tokenStreams = new CloseableThreadLocal();
/** Used by Analyzers that implement reusableTokenStream
* to retrieve previously saved TokenStreams for re-use
* by the same thread. */
protected Object getPreviousTokenStream() {
- return tokenStreams.get();
+ try {
+ return tokenStreams.get();
+ } catch (NullPointerException npe) {
+ if (tokenStreams == null) {
+ throw new AlreadyClosedException("this Analyzer is closed");
+ } else {
+ throw npe;
+ }
+ }
}
/** Used by Analyzers that implement reusableTokenStream
* to save a TokenStream for later re-use by the same
* thread. */
protected void setPreviousTokenStream(Object obj) {
- tokenStreams.set(obj);
+ try {
+ tokenStreams.set(obj);
+ } catch (NullPointerException npe) {
+ if (tokenStreams == null) {
+ throw new AlreadyClosedException("this Analyzer is closed");
+ } else {
+ throw npe;
+ }
+ }
}
@@ -78,4 +97,10 @@
{
return 0;
}
+
+ /** Frees persistent resources used by this Analyzer */
+ public void close() {
+ tokenStreams.close();
+ tokenStreams = null;
+ }
}