Author: tolusha
Date: 2012-03-28 05:40:20 -0400 (Wed, 28 Mar 2012)
New Revision: 5977
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
Log:
EXOJCR-1825: resume threads at stopping container
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2012-03-28
07:48:44 UTC (rev 5976)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2012-03-28
09:40:20 UTC (rev 5977)
@@ -702,11 +702,6 @@
{
handler.close();
- if (handler instanceof SearchIndex)
- {
- ((SearchIndex)handler).resumeWaitingThreads();
- }
-
// ChangesFiler instance is one for both SearchManagers and close() must be invoked
only once,
if (parentSearchManager != null)
{
@@ -1551,9 +1546,9 @@
if (!isSuspended.get())
{
- if (handler instanceof SearchIndex)
+ if (handler instanceof Suspendable)
{
- ((SearchIndex)handler).suspend();
+ ((Suspendable)handler).suspend();
}
isSuspended.set(true);
@@ -1564,9 +1559,9 @@
{
if (isSuspended.get())
{
- if (handler instanceof SearchIndex)
+ if (handler instanceof Suspendable)
{
- ((SearchIndex)handler).resume();
+ ((Suspendable)handler).resume();
}
isSuspended.set(false);
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2012-03-28
07:48:44 UTC (rev 5976)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2012-03-28
09:40:20 UTC (rev 5977)
@@ -55,6 +55,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.ResumeException;
import org.exoplatform.services.jcr.impl.backup.SuspendException;
+import org.exoplatform.services.jcr.impl.backup.Suspendable;
import org.exoplatform.services.jcr.impl.checker.InspectionReport;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
@@ -107,7 +108,7 @@
* Implements a {@link org.apache.jackrabbit.core.query.QueryHandler} using
* Lucene.
*/
-public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener
+public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener,
Suspendable
{
private static final DefaultQueryNodeFactory DEFAULT_QUERY_NODE_FACTORY = new
DefaultQueryNodeFactory();
@@ -1248,10 +1249,20 @@
/**
* Closes this <code>QueryHandler</code> and frees resources attached to
- * this handler.
+ * this handler. Also resume all waiting threads.
*/
public void close()
{
+ closeAndKeepWaitingThreads();
+ resumeWaitingThreads();
+ }
+
+ /**
+ * Closes this <code>QueryHandler</code> and frees resources attached to
+ * this handler.
+ */
+ private void closeAndKeepWaitingThreads()
+ {
if (!closed.get())
{
// cleanup resources obtained by filters
@@ -1284,7 +1295,6 @@
index.close();
getContext().destroy();
closed.set(true);
-
log.info("Index closed: " + path);
}
}
@@ -3360,7 +3370,7 @@
public void suspend() throws SuspendException
{
latcher.set(new CountDownLatch(1));
- close();
+ closeAndKeepWaitingThreads();
isSuspended.set(true);
}
@@ -3422,7 +3432,7 @@
* Count down latcher which makes for resuming all
* waiting threads.
*/
- public void resumeWaitingThreads()
+ private void resumeWaitingThreads()
{
if (latcher.get() != null)
{
@@ -3445,4 +3455,12 @@
{
this.indexingThreadPoolSize = indexingThreadPoolSize;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public int getPriority()
+ {
+ return PRIORITY_NORMAL;
+ }
}
Show replies by date