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 ma...@apache.org on 2010/01/28 19:27:34 UTC
svn commit: r904203 -
/lucene/java/trunk/src/java/org/apache/lucene/store/NativeFSLockFactory.java
Author: markrmiller
Date: Thu Jan 28 18:27:34 2010
New Revision: 904203
URL: http://svn.apache.org/viewvc?rev=904203&view=rev
Log:
update comments for NativeFSLockFactory
Modified:
lucene/java/trunk/src/java/org/apache/lucene/store/NativeFSLockFactory.java
Modified: lucene/java/trunk/src/java/org/apache/lucene/store/NativeFSLockFactory.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/store/NativeFSLockFactory.java?rev=904203&r1=904202&r2=904203&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/store/NativeFSLockFactory.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/store/NativeFSLockFactory.java Thu Jan 28 18:27:34 2010
@@ -159,12 +159,21 @@
/*
* The javadocs for FileChannel state that you should have
* a single instance of a FileChannel (per JVM) for all
- * locking against a given file. To ensure this, we have
- * a single (static) HashSet that contains the file paths
- * of all currently locked locks. This protects against
- * possible cases where different Directory instances in
- * one JVM (each with their own NativeFSLockFactory
- * instance) have set the same lock dir and lock prefix.
+ * locking against a given file (locks are tracked per
+ * FileChannel instance in Java 1.4/1.5). Even using the same
+ * FileChannel instance is not completely thread-safe with Java
+ * 1.4/1.5 though. To work around this, we have a single (static)
+ * HashSet that contains the file paths of all currently
+ * locked locks. This protects against possible cases
+ * where different Directory instances in one JVM (each
+ * with their own NativeFSLockFactory instance) have set
+ * the same lock dir and lock prefix. However, this will not
+ * work when LockFactorys are created by different
+ * classloaders (eg multiple webapps).
+ *
+ * TODO: Java 1.6 tracks system wide locks in a thread safe manner
+ * (same FileChannel instance or not), so we may want to
+ * change this when Lucene moves to Java 1.6.
*/
private static HashSet<String> LOCK_HELD = new HashSet<String>();