[hibernate-commits] Hibernate SVN: r20008 - in search/branches/Branch_3_2/hibernate-search/src: test/java/org/hibernate/search/test/batchindexing and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Jul 22 10:35:18 EDT 2010


Author: sannegrinovero
Date: 2010-07-22 10:35:17 -0400 (Thu, 22 Jul 2010)
New Revision: 20008

Modified:
   search/branches/Branch_3_2/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java
   search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Book.java
   search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/IndexingGeneratedCorpusTest.java
   search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Nation.java
Log:
HSEARCH-534 circular graphs of IndexedEmbedded might break MassIndexer (backport to branch 3.2)

Modified: search/branches/Branch_3_2/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java
===================================================================
--- search/branches/Branch_3_2/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java	2010-07-22 12:59:24 UTC (rev 20007)
+++ search/branches/Branch_3_2/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java	2010-07-22 14:35:17 UTC (rev 20008)
@@ -60,7 +60,6 @@
 	private final Map<Class<?>, DocumentBuilderIndexedEntity<?>> documentBuilders;
 	private final MassIndexerProgressMonitor monitor;
 	
-	private static final int CLEAR_PERIOD = 50;
 	private final CacheMode cacheMode;
 
 	private final CountDownLatch producerEndSignal;
@@ -104,7 +103,7 @@
 
 	private void indexAllQueue(Session session) {
 		try {
-			for ( int cycle=0; true; cycle++ ) {
+			while ( true ) {
 				List<?> takeList = source.take();
 				if ( takeList == null ) {
 					break;
@@ -116,11 +115,7 @@
 						session.buildLockRequest( LockOptions.NONE ).lock( take );
 						index( take, session );
 						monitor.documentsBuilt( 1 );
-						session.evict( take );
-						if ( cycle == CLEAR_PERIOD ) {
-							cycle = 0;
-							session.clear();
-						}
+						session.clear();
 					}
 				}
 			}

Modified: search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Book.java
===================================================================
--- search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Book.java	2010-07-22 12:59:24 UTC (rev 20007)
+++ search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Book.java	2010-07-22 14:35:17 UTC (rev 20008)
@@ -66,7 +66,7 @@
 
 	@ManyToOne(fetch=FetchType.LAZY,optional=false)
 	@Fetch(FetchMode.SELECT)
-	@IndexedEmbedded
+	@IndexedEmbedded(depth=3)
 	public Nation getFirstPublishedIn() {
 		return firstPublishedIn;
 	}

Modified: search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/IndexingGeneratedCorpusTest.java
===================================================================
--- search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/IndexingGeneratedCorpusTest.java	2010-07-22 12:59:24 UTC (rev 20007)
+++ search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/IndexingGeneratedCorpusTest.java	2010-07-22 14:35:17 UTC (rev 20008)
@@ -24,6 +24,8 @@
  */
 package org.hibernate.search.test.batchindexing;
 
+import java.util.List;
+
 import junit.framework.TestCase;
 
 import org.apache.lucene.search.MatchAllDocsQuery;
@@ -66,6 +68,7 @@
 		createMany( Book.class, BOOK_NUM );
 		createMany( Dvd.class, DVD_NUM );
 		createMany( AncientBook.class, ANCIENTBOOK_NUM );
+		storeAllBooksInNation();
 	}
 	
 	@Override
@@ -102,6 +105,24 @@
 		}
 	}
 	
+	/**
+	 * Adds all stored books to the Nation.
+	 * Needed to test for HSEARCH-534 and makes the dataset to index quite bigger.
+	 */
+	private void storeAllBooksInNation() {
+		FullTextSession fullTextSession = builder.openFullTextSession();
+		try {
+			Transaction tx = fullTextSession.beginTransaction();
+			List<Book> allBooks = fullTextSession.createCriteria( Book.class ).list();
+			Nation italy = (Nation) fullTextSession.load( Nation.class, 1 );
+			italy.getLibrariesHave().addAll( allBooks );
+			tx.commit();
+		}
+		finally {
+			fullTextSession.close();
+		}
+	}
+	
 	public void testBatchIndexing() throws InterruptedException {
 		verifyResultNumbers(); //initial count of entities should match expectations
 		purgeAll(); // empty indexes

Modified: search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Nation.java
===================================================================
--- search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Nation.java	2010-07-22 12:59:24 UTC (rev 20007)
+++ search/branches/Branch_3_2/hibernate-search/src/test/java/org/hibernate/search/test/batchindexing/Nation.java	2010-07-22 14:35:17 UTC (rev 20008)
@@ -24,12 +24,20 @@
  */
 package org.hibernate.search.test.batchindexing;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
+import javax.persistence.OneToMany;
 
+import org.hibernate.annotations.Fetch;
+import org.hibernate.annotations.FetchMode;
 import org.hibernate.search.annotations.Field;
 import org.hibernate.search.annotations.Index;
+import org.hibernate.search.annotations.IndexedEmbedded;
 
 @Entity
 public class Nation {
@@ -37,6 +45,7 @@
 	private Integer id;
 	private String name;
 	private String code;
+	private Set<Book> librariesHave = new HashSet<Book>();
 	
 	public Nation() {}
 	
@@ -71,6 +80,17 @@
 	public void setCode(String code) {
 		this.code = code;
 	}
+
+	@IndexedEmbedded
+	@OneToMany(fetch=FetchType.LAZY)
+	@Fetch(FetchMode.SELECT)
+	public Set<Book> getLibrariesHave() {
+		return librariesHave;
+	}
 	
+	public void setLibrariesHave(Set<Book> librariesHave) {
+		this.librariesHave = librariesHave;
+	}
+	
 }
 



More information about the hibernate-commits mailing list