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) {
Show replies by date