[hibernate-commits] Hibernate SVN: r19867 - in search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl: jgroups and 2 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Jun 30 09:42:05 EDT 2010


Author: epbernard
Date: 2010-06-30 09:42:05 -0400 (Wed, 30 Jun 2010)
New Revision: 19867

Modified:
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/blackhole/BlackHoleBackendQueueProcessorFactory.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jgroups/JGroupsBackendQueueProcessorFactory.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jms/JMSBackendQueueProcessorFactory.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessorFactory.java
Log:
HSEARCH-397 Add update contract implementation for existing backends

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/blackhole/BlackHoleBackendQueueProcessorFactory.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/blackhole/BlackHoleBackendQueueProcessorFactory.java	2010-06-30 13:41:20 UTC (rev 19866)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/blackhole/BlackHoleBackendQueueProcessorFactory.java	2010-06-30 13:42:05 UTC (rev 19867)
@@ -28,6 +28,7 @@
 import java.util.Properties;
 import java.util.Set;
 
+import org.hibernate.search.backend.UpdatableBackendQueueProcessorFactory;
 import org.hibernate.search.spi.WorkerBuildContext;
 import org.hibernate.search.backend.BackendQueueProcessorFactory;
 import org.hibernate.search.backend.LuceneWork;
@@ -44,7 +45,7 @@
  *
  * @author Sanne Grinovero
  */
-public class BlackHoleBackendQueueProcessorFactory implements BackendQueueProcessorFactory {
+public class BlackHoleBackendQueueProcessorFactory implements UpdatableBackendQueueProcessorFactory {
 	
 	private static final Logger log = LoggerFactory.make();
 	
@@ -59,15 +60,16 @@
 		log.warn( "initialized \"blackhole\" backend. Index changes will be prepared but discarded!" );
 	}
 
-	public void updateDirectoryProviders(Set<DirectoryProvider<?>> providers) {
-		log.warn( "update DirectoryProviders \"blackhole\" backend. Index changes will be prepared but discarded!" );
-	}
-
 	public void close() {
 		// no-op
 		log.info( "closed \"blackhole\" backend." );
 	}
-	
+
+	public void updateDirectoryProviders(Set<DirectoryProvider<?>> providers, WorkerBuildContext context) {
+		//no-op
+		log.warn( "update DirectoryProviders \"blackhole\" backend. Index changes will be prepared but discarded!" );
+	}
+
 	private static class NoOp implements Runnable {
 
 		public void run() {

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jgroups/JGroupsBackendQueueProcessorFactory.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jgroups/JGroupsBackendQueueProcessorFactory.java	2010-06-30 13:41:20 UTC (rev 19866)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jgroups/JGroupsBackendQueueProcessorFactory.java	2010-06-30 13:42:05 UTC (rev 19867)
@@ -36,6 +36,7 @@
 import org.slf4j.Logger;
 
 import org.hibernate.search.Environment;
+import org.hibernate.search.backend.UpdatableBackendQueueProcessorFactory;
 import org.hibernate.search.spi.WorkerBuildContext;
 import org.hibernate.search.SearchException;
 import org.hibernate.search.backend.BackendQueueProcessorFactory;
@@ -52,7 +53,7 @@
  *
  * @author Lukasz Moren
  */
-public abstract class JGroupsBackendQueueProcessorFactory implements BackendQueueProcessorFactory {
+public abstract class JGroupsBackendQueueProcessorFactory implements UpdatableBackendQueueProcessorFactory {
 
 	private static final Logger log = LoggerFactory.make();
 
@@ -79,7 +80,7 @@
 		prepareJGroupsChannel( props );
 	}
 
-	public void updateDirectoryProviders(Set<DirectoryProvider<?>> providers) {
+	public void updateDirectoryProviders(Set<DirectoryProvider<?>> providers, WorkerBuildContext context) {
 		//nothing to do here. The DirectoryProviders are not used
 	}
 

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jms/JMSBackendQueueProcessorFactory.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jms/JMSBackendQueueProcessorFactory.java	2010-06-30 13:41:20 UTC (rev 19866)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/jms/JMSBackendQueueProcessorFactory.java	2010-06-30 13:42:05 UTC (rev 19867)
@@ -36,16 +36,16 @@
 import javax.naming.NamingException;
 
 import org.hibernate.search.Environment;
+import org.hibernate.search.backend.UpdatableBackendQueueProcessorFactory;
 import org.hibernate.search.spi.WorkerBuildContext;
 import org.hibernate.search.SearchException;
-import org.hibernate.search.backend.BackendQueueProcessorFactory;
 import org.hibernate.search.backend.LuceneWork;
 import org.hibernate.search.store.DirectoryProvider;
 
 /**
  * @author Emmanuel Bernard
  */
-public class JMSBackendQueueProcessorFactory implements BackendQueueProcessorFactory {
+public class JMSBackendQueueProcessorFactory implements UpdatableBackendQueueProcessorFactory {
 	private String jmsQueueName;
 	private String jmsConnectionFactoryName;
 	private static final String JNDI_PREFIX = Environment.WORKER_PREFIX + "jndi.";

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessorFactory.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessorFactory.java	2010-06-30 13:41:20 UTC (rev 19866)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessorFactory.java	2010-06-30 13:42:05 UTC (rev 19867)
@@ -31,8 +31,8 @@
 import java.util.Set;
 
 import org.hibernate.search.SearchException;
+import org.hibernate.search.backend.UpdatableBackendQueueProcessorFactory;
 import org.hibernate.search.spi.WorkerBuildContext;
-import org.hibernate.search.backend.BackendQueueProcessorFactory;
 import org.hibernate.search.backend.LuceneWork;
 import org.hibernate.search.backend.impl.BatchedQueueingProcessor;
 import org.hibernate.search.engine.SearchFactoryImplementor;
@@ -48,7 +48,7 @@
  * @author Emmanuel Bernard
  * @author Sanne Grinovero
  */
-public class LuceneBackendQueueProcessorFactory implements BackendQueueProcessorFactory {
+public class LuceneBackendQueueProcessorFactory implements UpdatableBackendQueueProcessorFactory {
 
 	private SearchFactoryImplementor searchFactoryImp;
 	
@@ -58,8 +58,11 @@
 	 * Both Workspace(s) and LuceneWorkVisitor(s) lifecycle are linked to the backend
 	 * lifecycle (reused and shared by all transactions);
 	 * the LuceneWorkVisitor(s) are stateless, the Workspace(s) are threadsafe.
+	 *
+	 * This read only structure is guarded by a volatile: upon updates of the backend,
+	 * changes should be synchronized in a multithreaded way.
 	 */
-	private final Map<DirectoryProvider<?>,PerDPResources> resourcesMap =
+	private volatile Map<DirectoryProvider<?>,PerDPResources> resourcesMap =
 			new HashMap<DirectoryProvider<?>,PerDPResources>();
 
 	/**
@@ -91,6 +94,7 @@
 				throw new SearchException("DirectoryProvider no longer present during SearchFactory update" );
 			}
 		}
+		this.resourcesMap = newResourceMap;
 	}
 
 	public Runnable getProcessor(List<LuceneWork> queue) {



More information about the hibernate-commits mailing list