[hibernate-commits] Hibernate SVN: r19186 - search/trunk/hibernate-search/src/main/java/org/hibernate/search/store.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Apr 8 05:09:23 EDT 2010
Author: sannegrinovero
Date: 2010-04-08 05:09:22 -0400 (Thu, 08 Apr 2010)
New Revision: 19186
Modified:
search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
Log:
HSEARCH-492 FSMasterDirectoryProvider and FSSlaveDirectoryProvider don't shutdown the Executor
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSMasterDirectoryProvider.java 2010-04-08 07:08:28 UTC (rev 19185)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSMasterDirectoryProvider.java 2010-04-08 09:09:22 UTC (rev 19186)
@@ -29,7 +29,7 @@
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
-import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
@@ -77,6 +77,7 @@
private File indexDir;
private String directoryProviderName;
private Properties properties;
+ private TriggerTask task;
public void initialize(String directoryProviderName, Properties properties, SearchFactoryImplementor searchFactoryImplementor) {
this.properties = properties;
@@ -124,7 +125,7 @@
catch (IOException e) {
throw new SearchException( "Unable to initialize index: " + directoryProviderName, e );
}
- TimerTask task = new FSMasterDirectoryProvider.TriggerTask( indexDir, sourceDir, this );
+ task = new FSMasterDirectoryProvider.TriggerTask( indexDir, sourceDir, this );
long period = DirectoryProviderHelper.getRefreshPeriod( properties, directoryProviderName );
timer.scheduleAtFixedRate( task, period, period );
this.current = currentLocal; //write to volatile to publish all state
@@ -166,6 +167,7 @@
@SuppressWarnings("unused")
int readCurrentState = current; //Another unneeded value, to ensure visibility of state protected by memory barrier
timer.cancel();
+ task.stop();
try {
directory.close();
}
@@ -176,7 +178,7 @@
private class TriggerTask extends TimerTask {
- private final Executor executor;
+ private final ExecutorService executor;
private final FSMasterDirectoryProvider.CopyDirectory copyTask;
public TriggerTask(File source, File destination, DirectoryProvider<FSDirectory> directoryProvider) {
@@ -192,6 +194,10 @@
log.info( "Skipping directory synchronization, previous work still in progress: {}", indexName );
}
}
+
+ public void stop() {
+ executor.shutdownNow();
+ }
}
private class CopyDirectory implements Runnable {
Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java 2010-04-08 07:08:28 UTC (rev 19185)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java 2010-04-08 09:09:22 UTC (rev 19186)
@@ -29,7 +29,7 @@
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
-import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -72,6 +72,7 @@
private File indexDir;
private String directoryProviderName;
private Properties properties;
+ private TriggerTask task;
public void initialize(String directoryProviderName, Properties properties, SearchFactoryImplementor searchFactoryImplementor) {
this.properties = properties;
@@ -144,7 +145,7 @@
catch ( IOException e ) {
throw new SearchException( "Unable to initialize index: " + directoryProviderName, e );
}
- TimerTask task = new TriggerTask( sourceIndexDir, indexDir );
+ task = new TriggerTask( sourceIndexDir, indexDir );
long period = DirectoryProviderHelper.getRefreshPeriod( properties, directoryProviderName );
timer.scheduleAtFixedRate( task, period, period );
this.current = currentToBe;
@@ -195,7 +196,7 @@
class TriggerTask extends TimerTask {
- private final Executor executor;
+ private final ExecutorService executor;
private final CopyDirectory copyTask;
public TriggerTask(File sourceIndexDir, File destination) {
@@ -215,6 +216,10 @@
}
}
}
+
+ public void stop() {
+ executor.shutdownNow();
+ }
}
class CopyDirectory implements Runnable {
@@ -301,6 +306,7 @@
@SuppressWarnings("unused")
int readCurrentState = current; //unneded value, but ensure visibility of state protected by memory barrier
timer.cancel();
+ task.stop();
try {
directory1.close();
}
More information about the hibernate-commits
mailing list