[infinispan-commits] Infinispan SVN: r1119 - in trunk: lucene-directory/src/main/java/org/infinispan/lucene and 1 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Mon Nov 9 18:35:32 EST 2009


Author: sannegrinovero
Date: 2009-11-09 18:35:31 -0500 (Mon, 09 Nov 2009)
New Revision: 1119

Modified:
   trunk/core/src/main/java/org/infinispan/util/concurrent/ConcurrentHashSet.java
   trunk/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java
   trunk/lucene-directory/src/test/java/org/infinispan/lucene/InfinispanDirectoryStressTest.java
Log:
[ISPN-260] (Transactions aborting on high load from readers)

Modified: trunk/core/src/main/java/org/infinispan/util/concurrent/ConcurrentHashSet.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/util/concurrent/ConcurrentHashSet.java	2009-11-09 18:38:03 UTC (rev 1118)
+++ trunk/core/src/main/java/org/infinispan/util/concurrent/ConcurrentHashSet.java	2009-11-09 23:35:31 UTC (rev 1119)
@@ -21,6 +21,7 @@
  */
 package org.infinispan.util.concurrent;
 
+import java.io.Serializable;
 import java.util.AbstractSet;
 import java.util.Collection;
 import java.util.Iterator;
@@ -35,9 +36,15 @@
  * @author <a href="mailto:manik at jboss.org">Manik Surtani</a>
  * @since 4.0
  */
-public class ConcurrentHashSet<E> extends AbstractSet<E> {
-   protected ConcurrentHashMap<E, Object> map;
-   private static final Object DUMMY = new Object();
+public class ConcurrentHashSet<E> extends AbstractSet<E> implements Serializable {
+   
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5312604953511379869L;
+   
+   protected final ConcurrentHashMap<E, Object> map;
+   
+   /** any Serializable object will do, Integer.valueOf(0) is known cheap **/
+   private static final Serializable DUMMY = Integer.valueOf(0);
 
    public ConcurrentHashSet() {
       map = new ConcurrentHashMap<E, Object>();

Modified: trunk/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java
===================================================================
--- trunk/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java	2009-11-09 18:38:03 UTC (rev 1118)
+++ trunk/lucene-directory/src/main/java/org/infinispan/lucene/InfinispanDirectory.java	2009-11-09 23:35:31 UTC (rev 1119)
@@ -33,6 +33,7 @@
 import org.apache.lucene.store.LockFactory;
 import org.infinispan.Cache;
 import org.infinispan.lucene.locking.LuceneLockFactory;
+import org.infinispan.util.concurrent.ConcurrentHashSet;
 import org.infinispan.util.logging.Log;
 import org.infinispan.util.logging.LogFactory;
 
@@ -219,7 +220,7 @@
    private Set<String> getFileList() {
       Set<String> fileList = (Set<String>) cache.get(fileListCacheKey);
       if (fileList == null)
-         fileList = new HashSet<String>();
+         fileList = new ConcurrentHashSet<String>();
       return fileList;
    }
 

Modified: trunk/lucene-directory/src/test/java/org/infinispan/lucene/InfinispanDirectoryStressTest.java
===================================================================
--- trunk/lucene-directory/src/test/java/org/infinispan/lucene/InfinispanDirectoryStressTest.java	2009-11-09 18:38:03 UTC (rev 1118)
+++ trunk/lucene-directory/src/test/java/org/infinispan/lucene/InfinispanDirectoryStressTest.java	2009-11-09 23:35:31 UTC (rev 1119)
@@ -34,7 +34,6 @@
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.Hits;
 import org.apache.lucene.search.TopDocs;
 import org.infinispan.Cache;
 import org.infinispan.manager.CacheManager;
@@ -46,7 +45,6 @@
  * @author Lukasz Moren
  * @author Sanne Grinovero
  */
- at SuppressWarnings("deprecation")
 @Test(groups = "profiling", testName = "lucene.InfinispanDirectoryStressTest")
 public class InfinispanDirectoryStressTest {
 
@@ -85,19 +83,26 @@
       List<InfinispanDirectoryThread> threads = new ArrayList<InfinispanDirectoryThread>();
       Cache<CacheKey, Object> cache = CacheTestSupport.createTestCacheManager().getCache();
       Cache<CacheKey, Object> cache2 = CacheTestSupport.createTestCacheManager().getCache(); // dummy cache, to force replication
-      Directory directory = new InfinispanDirectory(cache, "indexName");
+      Directory directory1 = new InfinispanDirectory(cache, "indexName");
+      Directory directory2 = new InfinispanDirectory(cache2, "indexName");
 
       IndexWriter.MaxFieldLength fieldLength = new IndexWriter.MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH);
-      IndexWriter iw = new IndexWriter(directory, new StandardAnalyzer(), true, fieldLength);
+      IndexWriter iw = new IndexWriter(directory1, new StandardAnalyzer(), true, fieldLength);
       iw.close();
 
       // create first writing thread
-      InfinispanDirectoryThread tr = new InfinispanDirectoryThread(latch, directory, true);
+      InfinispanDirectoryThread tr = new InfinispanDirectoryThread(latch, directory1, true);
       threads.add(tr);
       tr.start();
       // others reading threads
       for (int i = 0; i < THREADS_NUM - 1; i++) {
-         InfinispanDirectoryThread thread = new InfinispanDirectoryThread(latch, directory, false);
+         InfinispanDirectoryThread thread;
+         if (i%2==0) {
+            thread = new InfinispanDirectoryThread(latch, directory1, false);
+         }
+         else {
+            thread = new InfinispanDirectoryThread(latch, directory2, false);
+         }
          threads.add(thread);
          thread.start();
       }
@@ -110,12 +115,11 @@
 
       for (InfinispanDirectoryThread thread : threads) {
          if (thread.e != null) {
-            log.error("Exception was catched during the test: ", thread.e);
-            assert false : "Exception during test in parallel thread";
+            throw thread.e;
          }
       }
 
-      IndexSearcher search = new IndexSearcher(directory);
+      IndexSearcher search = new IndexSearcher(directory1);
       Term t = new Term("info", "good");
       Query query = new TermQuery(t);
       int expectedDocs = writeCount.get();
@@ -124,7 +128,8 @@
       assert expectedDocs == hits.totalHits;
 
       search.close();
-      directory.close();
+      directory1.close();
+      directory2.close();
       cache.getCacheManager().stop();
       cache2.getCacheManager().stop();
    }



More information about the infinispan-commits mailing list