exo-jcr SVN: r5979 - jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-28 07:02:43 -0400 (Wed, 28 Mar 2012)
New Revision: 5979
Modified:
jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch
Log:
JCR-1717: patch proposed
Modified: jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch 2012-03-28 10:51:53 UTC (rev 5978)
+++ jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch 2012-03-28 11:02:43 UTC (rev 5979)
@@ -64,20 +64,15 @@
private final ExoContainerContext ctx;
/**
-@@ -474,6 +483,12 @@
+@@ -474,6 +483,7 @@
public void stop()
{
handler.close();
+
-+ if (handler instanceof SearchIndex)
-+ {
-+ ((SearchIndex)handler).resumeWaitingThreads();
-+ }
-+
log.info("Search manager stopped");
}
-@@ -856,4 +871,62 @@
+@@ -856,4 +866,62 @@
return false;
}
@@ -109,9 +104,9 @@
+ {
+ if (!isSuspended.get())
+ {
-+ if (handler instanceof SearchIndex)
++ if (handler instanceof Suspendable)
+ {
-+ ((SearchIndex)handler).suspend();
++ ((Suspendable)handler).suspend();
+ }
+
+ isSuspended.set(true);
@@ -122,9 +117,9 @@
+ {
+ if (isSuspended.get())
+ {
-+ if (handler instanceof SearchIndex)
++ if (handler instanceof Suspendable)
+ {
-+ ((SearchIndex)handler).resume();
++ ((Suspendable)handler).resume();
+ }
+
+ isSuspended.set(false);
@@ -144,16 +139,17 @@
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (working copy)
-@@ -45,6 +45,8 @@
+@@ -45,6 +45,9 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPath;
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.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
-@@ -78,6 +80,9 @@
+@@ -78,6 +81,9 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -163,7 +159,16 @@
import javax.jcr.RepositoryException;
import javax.jcr.query.InvalidQueryException;
-@@ -428,7 +433,7 @@
+@@ -89,7 +95,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();
+@@ -428,7 +434,7 @@
* Indicates if this <code>SearchIndex</code> is closed and cannot be used
* anymore.
*/
@@ -172,7 +177,7 @@
/**
* Text extractor for extracting text content of binary properties.
-@@ -448,6 +453,16 @@
+@@ -448,6 +454,16 @@
private final ConfigurationManager cfm;
/**
@@ -189,11 +194,26 @@
* Working constructor.
*
* @throws RepositoryConfigurationException
-@@ -819,26 +834,29 @@
+@@ -815,30 +831,43 @@
+
+ /**
+ * Closes this <code>QueryHandler</code> and frees resources attached to
+- * this handler.
++ * this handler. Also resume waiting threads.
*/
public void close()
{
- if (synonymProviderConfigFs != null)
++ closeAndKeepWaitingThreads();
++ resumeWaitingThreads();
++ }
++
++ /**
++ * Closes this <code>QueryHandler</code> and frees resources attached to
++ * this handler.
++ */
++ public void closeAndKeepWaitingThreads()
++ {
+ if (!closed.get())
{
- try
@@ -233,7 +253,7 @@
}
/**
-@@ -866,6 +884,8 @@
+@@ -866,6 +895,8 @@
public MultiColumnQueryHits executeQuery(SessionImpl session, AbstractQueryImpl queryImpl, Query query,
QPath[] orderProps, boolean[] orderSpecs, long resultFetchHint) throws IOException, RepositoryException
{
@@ -242,7 +262,7 @@
checkOpen();
Sort sort = new Sort(createSortFields(orderProps, orderSpecs));
-@@ -914,6 +934,8 @@
+@@ -914,6 +945,8 @@
public MultiColumnQueryHits executeQuery(SessionImpl session, MultiColumnQuery query, QPath[] orderProps,
boolean[] orderSpecs, long resultFetchHint) throws IOException, RepositoryException
{
@@ -251,7 +271,7 @@
checkOpen();
Sort sort = new Sort(createSortFields(orderProps, orderSpecs));
-@@ -2606,7 +2628,7 @@
+@@ -2606,7 +2639,7 @@
*/
private void checkOpen() throws IOException
{
@@ -260,7 +280,7 @@
{
throw new IOException("query handler closed and cannot be used anymore.");
}
-@@ -2710,6 +2732,8 @@
+@@ -2710,6 +2743,8 @@
*/
public QueryHits executeQuery(Query query) throws IOException
{
@@ -269,7 +289,7 @@
checkOpen();
IndexReader reader = getIndexReader(true);
-@@ -2742,4 +2766,80 @@
+@@ -2742,4 +2777,88 @@
log.error("Can not recover error log.", e);
}
}
@@ -280,7 +300,7 @@
+ public void suspend() throws SuspendException
+ {
+ latcher.set(new CountDownLatch(1));
-+ close();
++ closeAndKeepWaitingThreads();
+
+ isSuspended.set(true);
+ }
@@ -349,6 +369,14 @@
+ latcher.get().countDown();
+ }
+ }
++
++ /**
++ * {@inheritDoc}
++ */
++ public int getPriority()
++ {
++ return PRIORITY_NORMAL;
++ }
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
12 years, 1 month
exo-jcr SVN: r5978 - jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-28 06:51:53 -0400 (Wed, 28 Mar 2012)
New Revision: 5978
Modified:
jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
Log:
JCR-1725: patch proposed
Modified: jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
===================================================================
--- jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-28 09:40:20 UTC (rev 5977)
+++ jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-28 10:51:53 UTC (rev 5978)
@@ -2,15 +2,7 @@
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5970)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (working copy)
-@@ -53,7 +53,6 @@
- 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;
-@@ -81,8 +80,20 @@
+@@ -81,8 +81,20 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.security.PrivilegedAction;
@@ -32,16 +24,7 @@
import javax.jcr.RepositoryException;
import javax.jcr.query.InvalidQueryException;
-@@ -94,7 +105,7 @@
- * Implements a {@link org.apache.jackrabbit.core.query.QueryHandler} using
- * Lucene.
- */
--public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener, Suspendable
-+public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener
- {
-
- private static final DefaultQueryNodeFactory DEFAULT_QUERY_NODE_FACTORY = new DefaultQueryNodeFactory();
-@@ -202,7 +213,7 @@
+@@ -202,7 +214,7 @@
* Default name of the error log file
*/
private static final String ERROR_LOG = "error.log";
@@ -50,7 +33,7 @@
/**
* The actual index
*/
-@@ -464,12 +475,12 @@
+@@ -464,12 +476,12 @@
* Indicates if this <code>SearchIndex</code> is closed and cannot be used
* anymore.
*/
@@ -65,7 +48,7 @@
/**
* Text extractor for extracting text content of binary properties.
-@@ -516,12 +527,12 @@
+@@ -516,12 +528,12 @@
/**
* Waiting query execution until resume.
*/
@@ -80,16 +63,31 @@
protected final Set<String> recoveryFilterClasses;
-@@ -1237,7 +1248,7 @@
+@@ -1233,11 +1245,21 @@
+
+ /**
+ * Closes this <code>QueryHandler</code> and frees resources attached to
+- * this handler.
++ * this handler. Also resume waiting threads.
*/
public void close()
{
- if (!closed)
++ closeAndKeepWaitingThreads();
++ resumeWaitingThreads();
++ }
++
++ /**
++ * Closes this <code>QueryHandler</code> and frees resources attached to
++ * this handler.
++ */
++ public void closeAndKeepWaitingThreads()
++ {
+ if (!closed.get())
{
// cleanup resources obtained by filters
if (recoveryFilters != null)
-@@ -1268,7 +1279,7 @@
+@@ -1268,7 +1290,7 @@
errorLog.close();
index.close();
getContext().destroy();
@@ -98,7 +96,7 @@
log.info("Index closed: " + path);
}
}
-@@ -1546,7 +1557,7 @@
+@@ -1546,7 +1568,7 @@
protected IndexReader getIndexReader(boolean includeSystemIndex) throws IOException
{
// deny query execution if index in offline mode and allowQuery is false
@@ -107,7 +105,7 @@
{
throw new IndexOfflineIOException("Index is offline");
}
-@@ -3202,7 +3213,7 @@
+@@ -3202,7 +3224,7 @@
*/
private void checkOpen() throws IOException
{
@@ -116,7 +114,7 @@
{
throw new IOException("query handler closed and cannot be used anymore.");
}
-@@ -3358,11 +3369,11 @@
+@@ -3358,11 +3380,11 @@
checkOpen();
if (isOnline)
{
@@ -130,20 +128,21 @@
}
index.setOnline(isOnline, dropStaleIndexes);
}
-@@ -3380,10 +3391,10 @@
+@@ -3380,10 +3402,10 @@
*/
public void suspend() throws SuspendException
{
- latcher = new CountDownLatch(1);
+- close();
+ latcher.set(new CountDownLatch(1));
- close();
++ closeAndKeepWaitingThreads();
- isSuspended = true;
+ isSuspended.set(true);
}
/**
-@@ -3393,12 +3404,12 @@
+@@ -3393,12 +3415,12 @@
{
try
{
@@ -159,7 +158,7 @@
}
catch (IOException e)
{
-@@ -3415,7 +3426,7 @@
+@@ -3415,7 +3437,7 @@
*/
public boolean isSuspended()
{
@@ -168,7 +167,7 @@
}
/**
-@@ -3426,11 +3437,11 @@
+@@ -3426,11 +3448,11 @@
*/
private void waitForResuming() throws IOException
{
@@ -182,7 +181,7 @@
}
catch (InterruptedException e)
{
-@@ -3440,11 +3451,15 @@
+@@ -3440,11 +3462,15 @@
}
/**
@@ -201,6 +200,19 @@
}
/**
+@@ -3462,4 +3488,12 @@
+ {
+ this.indexingThreadPoolSize = indexingThreadPoolSize;
+ }
++
++ /**
++ * {@inheritDoc}
++ */
++ public int getPriority()
++ {
++ return PRIORITY_NORMAL;
++ }
+ }
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (revision 5970)
@@ -476,20 +488,15 @@
{
parentSearchManager.suspend();
}
-@@ -699,6 +700,12 @@
+@@ -699,6 +700,7 @@
public void stop()
{
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)
{
-@@ -1202,7 +1209,7 @@
+@@ -1202,7 +1204,7 @@
{
if (rpcService != null)
{
@@ -498,7 +505,7 @@
try
{
-@@ -1228,7 +1235,7 @@
+@@ -1228,7 +1230,7 @@
*/
public boolean isSuspended()
{
@@ -507,7 +514,7 @@
}
/**
-@@ -1275,7 +1282,7 @@
+@@ -1275,7 +1277,7 @@
throw new ResumeException(e);
}
@@ -516,7 +523,7 @@
}
else
{
-@@ -1303,10 +1310,10 @@
+@@ -1303,10 +1305,10 @@
throw new IllegalStateException(
"Index is not in READ_WRITE mode and reindexing can't be launched. Please start reindexing on coordinator node.");
}
@@ -529,7 +536,7 @@
}
log.info("Starting hot reindexing on the " + handler.getContext().getRepositoryName() + "/"
-@@ -1321,7 +1328,7 @@
+@@ -1321,7 +1323,7 @@
hotReindexingState = "Running. Started at " + sdf.format(Calendar.getInstance().getTime());
try
{
@@ -538,7 +545,7 @@
// set offline cluster wide (will make merger disposed and volatile flushed)
if (rpcService != null && changesFilter.isShared())
{
-@@ -1399,7 +1406,7 @@
+@@ -1399,7 +1401,7 @@
hotReindexingState = "Stopped with errors at " + sdf.format(Calendar.getInstance().getTime());
log.info("Reindexing halted with errors.");
}
@@ -547,7 +554,7 @@
}
}
}, "HotReindexing-" + handler.getContext().getRepositoryName() + "-"
-@@ -1512,7 +1519,7 @@
+@@ -1512,7 +1514,7 @@
public Serializable execute(Serializable[] args) throws Throwable
{
@@ -556,18 +563,16 @@
}
});
-@@ -1542,27 +1549,27 @@
+@@ -1542,27 +1544,27 @@
throw new SuspendException("Can't suspend index, while reindexing in progeress.");
}
- if (!isSuspended)
+ if (!isSuspended.get())
{
-- if (handler instanceof Suspendable)
-+ if (handler instanceof SearchIndex)
+ if (handler instanceof Suspendable)
{
-- ((Suspendable)handler).suspend();
-+ ((SearchIndex)handler).suspend();
+ ((Suspendable)handler).suspend();
}
- isSuspended = true;
@@ -580,11 +585,9 @@
- if (isSuspended)
+ if (isSuspended.get())
{
-- if (handler instanceof Suspendable)
-+ if (handler instanceof SearchIndex)
+ if (handler instanceof Suspendable)
{
-- ((Suspendable)handler).resume();
-+ ((SearchIndex)handler).resume();
+ ((Suspendable)handler).resume();
}
- isSuspended = false;
@@ -592,7 +595,7 @@
}
}
-@@ -1571,7 +1578,7 @@
+@@ -1571,7 +1573,7 @@
*/
public void onChange(TopologyChangeEvent event)
{
12 years, 1 month
exo-jcr SVN: r5977 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query: lucene and 1 other directory.
by do-not-reply@jboss.org
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;
+ }
}
12 years, 1 month
exo-jcr SVN: r5976 - jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-28 03:48:44 -0400 (Wed, 28 Mar 2012)
New Revision: 5976
Modified:
jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch
Log:
JCR-1717: patch updated
Modified: jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch 2012-03-28 07:47:42 UTC (rev 5975)
+++ jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch 2012-03-28 07:48:44 UTC (rev 5976)
@@ -64,7 +64,20 @@
private final ExoContainerContext ctx;
/**
-@@ -856,4 +865,62 @@
+@@ -474,6 +483,12 @@
+ public void stop()
+ {
+ handler.close();
++
++ if (handler instanceof SearchIndex)
++ {
++ ((SearchIndex)handler).resumeWaitingThreads();
++ }
++
+ log.info("Search manager stopped");
+ }
+
+@@ -856,4 +871,62 @@
return false;
}
@@ -96,9 +109,9 @@
+ {
+ if (!isSuspended.get())
+ {
-+ if (handler instanceof Suspendable)
++ if (handler instanceof SearchIndex)
+ {
-+ ((Suspendable)handler).suspend();
++ ((SearchIndex)handler).suspend();
+ }
+
+ isSuspended.set(true);
@@ -109,9 +122,9 @@
+ {
+ if (isSuspended.get())
+ {
-+ if (handler instanceof Suspendable)
++ if (handler instanceof SearchIndex)
+ {
-+ ((Suspendable)handler).resume();
++ ((SearchIndex)handler).resume();
+ }
+
+ isSuspended.set(false);
@@ -131,17 +144,16 @@
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (working copy)
-@@ -45,6 +45,9 @@
+@@ -45,6 +45,8 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPath;
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.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
-@@ -78,6 +81,9 @@
+@@ -78,6 +80,9 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -151,16 +163,7 @@
import javax.jcr.RepositoryException;
import javax.jcr.query.InvalidQueryException;
-@@ -89,7 +95,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();
-@@ -428,7 +434,7 @@
+@@ -428,7 +433,7 @@
* Indicates if this <code>SearchIndex</code> is closed and cannot be used
* anymore.
*/
@@ -169,7 +172,7 @@
/**
* Text extractor for extracting text content of binary properties.
-@@ -448,6 +454,16 @@
+@@ -448,6 +453,16 @@
private final ConfigurationManager cfm;
/**
@@ -186,7 +189,7 @@
* Working constructor.
*
* @throws RepositoryConfigurationException
-@@ -819,26 +835,31 @@
+@@ -819,26 +834,29 @@
*/
public void close()
{
@@ -216,8 +219,6 @@
+ index.close();
+ getContext().destroy();
+ closed.set(true);
-+ resumeWaitingThreads();
-+
+ log.info("Index closed: " + path);
}
- if (spellChecker != null)
@@ -232,7 +233,7 @@
}
/**
-@@ -866,6 +887,8 @@
+@@ -866,6 +884,8 @@
public MultiColumnQueryHits executeQuery(SessionImpl session, AbstractQueryImpl queryImpl, Query query,
QPath[] orderProps, boolean[] orderSpecs, long resultFetchHint) throws IOException, RepositoryException
{
@@ -241,7 +242,7 @@
checkOpen();
Sort sort = new Sort(createSortFields(orderProps, orderSpecs));
-@@ -914,6 +937,8 @@
+@@ -914,6 +934,8 @@
public MultiColumnQueryHits executeQuery(SessionImpl session, MultiColumnQuery query, QPath[] orderProps,
boolean[] orderSpecs, long resultFetchHint) throws IOException, RepositoryException
{
@@ -250,7 +251,7 @@
checkOpen();
Sort sort = new Sort(createSortFields(orderProps, orderSpecs));
-@@ -2606,7 +2631,7 @@
+@@ -2606,7 +2628,7 @@
*/
private void checkOpen() throws IOException
{
@@ -259,7 +260,7 @@
{
throw new IOException("query handler closed and cannot be used anymore.");
}
-@@ -2710,6 +2735,8 @@
+@@ -2710,6 +2732,8 @@
*/
public QueryHits executeQuery(Query query) throws IOException
{
@@ -268,7 +269,7 @@
checkOpen();
IndexReader reader = getIndexReader(true);
-@@ -2742,4 +2769,88 @@
+@@ -2742,4 +2766,80 @@
log.error("Can not recover error log.", e);
}
}
@@ -341,21 +342,13 @@
+ * Count down latcher which makes for resuming all
+ * waiting threads.
+ */
-+ private void resumeWaitingThreads()
++ public void resumeWaitingThreads()
+ {
+ if (latcher.get() != null)
+ {
+ latcher.get().countDown();
+ }
+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public int getPriority()
-+ {
-+ return PRIORITY_NORMAL;
-+ }
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
12 years, 1 month
exo-jcr SVN: r5975 - jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-28 03:47:42 -0400 (Wed, 28 Mar 2012)
New Revision: 5975
Modified:
jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
Log:
JCR-1725: patch updated
Modified: jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
===================================================================
--- jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-28 07:43:43 UTC (rev 5974)
+++ jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-28 07:47:42 UTC (rev 5975)
@@ -476,19 +476,20 @@
{
parentSearchManager.suspend();
}
-@@ -698,6 +699,11 @@
-
+@@ -699,6 +700,12 @@
public void stop()
{
+ handler.close();
++
+ if (handler instanceof SearchIndex)
+ {
+ ((SearchIndex)handler).resumeWaitingThreads();
+ }
+
- handler.close();
// ChangesFiler instance is one for both SearchManagers and close() must be invoked only once,
if (parentSearchManager != null)
-@@ -1202,7 +1208,7 @@
+ {
+@@ -1202,7 +1209,7 @@
{
if (rpcService != null)
{
@@ -497,7 +498,7 @@
try
{
-@@ -1228,7 +1234,7 @@
+@@ -1228,7 +1235,7 @@
*/
public boolean isSuspended()
{
@@ -506,7 +507,7 @@
}
/**
-@@ -1275,7 +1281,7 @@
+@@ -1275,7 +1282,7 @@
throw new ResumeException(e);
}
@@ -515,7 +516,7 @@
}
else
{
-@@ -1303,10 +1309,10 @@
+@@ -1303,10 +1310,10 @@
throw new IllegalStateException(
"Index is not in READ_WRITE mode and reindexing can't be launched. Please start reindexing on coordinator node.");
}
@@ -528,7 +529,7 @@
}
log.info("Starting hot reindexing on the " + handler.getContext().getRepositoryName() + "/"
-@@ -1321,7 +1327,7 @@
+@@ -1321,7 +1328,7 @@
hotReindexingState = "Running. Started at " + sdf.format(Calendar.getInstance().getTime());
try
{
@@ -537,7 +538,7 @@
// set offline cluster wide (will make merger disposed and volatile flushed)
if (rpcService != null && changesFilter.isShared())
{
-@@ -1399,7 +1405,7 @@
+@@ -1399,7 +1406,7 @@
hotReindexingState = "Stopped with errors at " + sdf.format(Calendar.getInstance().getTime());
log.info("Reindexing halted with errors.");
}
@@ -546,7 +547,7 @@
}
}
}, "HotReindexing-" + handler.getContext().getRepositoryName() + "-"
-@@ -1512,7 +1518,7 @@
+@@ -1512,7 +1519,7 @@
public Serializable execute(Serializable[] args) throws Throwable
{
@@ -555,7 +556,7 @@
}
});
-@@ -1542,27 +1548,27 @@
+@@ -1542,27 +1549,27 @@
throw new SuspendException("Can't suspend index, while reindexing in progeress.");
}
@@ -591,7 +592,7 @@
}
}
-@@ -1571,7 +1577,7 @@
+@@ -1571,7 +1578,7 @@
*/
public void onChange(TopologyChangeEvent event)
{
12 years, 1 month
exo-jcr SVN: r5974 - jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-28 03:43:43 -0400 (Wed, 28 Mar 2012)
New Revision: 5974
Modified:
jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
Log:
JCR-1725: patch updated
Modified: jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
===================================================================
--- jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-28 07:22:01 UTC (rev 5973)
+++ jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-28 07:43:43 UTC (rev 5974)
@@ -2,7 +2,15 @@
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5970)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (working copy)
-@@ -81,8 +81,20 @@
+@@ -53,7 +53,6 @@
+ 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;
+@@ -81,8 +80,20 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.security.PrivilegedAction;
@@ -24,7 +32,16 @@
import javax.jcr.RepositoryException;
import javax.jcr.query.InvalidQueryException;
-@@ -202,7 +214,7 @@
+@@ -94,7 +105,7 @@
+ * Implements a {@link org.apache.jackrabbit.core.query.QueryHandler} using
+ * Lucene.
+ */
+-public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener, Suspendable
++public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener
+ {
+
+ private static final DefaultQueryNodeFactory DEFAULT_QUERY_NODE_FACTORY = new DefaultQueryNodeFactory();
+@@ -202,7 +213,7 @@
* Default name of the error log file
*/
private static final String ERROR_LOG = "error.log";
@@ -33,7 +50,7 @@
/**
* The actual index
*/
-@@ -464,12 +476,12 @@
+@@ -464,12 +475,12 @@
* Indicates if this <code>SearchIndex</code> is closed and cannot be used
* anymore.
*/
@@ -48,7 +65,7 @@
/**
* Text extractor for extracting text content of binary properties.
-@@ -516,12 +528,12 @@
+@@ -516,12 +527,12 @@
/**
* Waiting query execution until resume.
*/
@@ -63,7 +80,7 @@
protected final Set<String> recoveryFilterClasses;
-@@ -1237,7 +1249,7 @@
+@@ -1237,7 +1248,7 @@
*/
public void close()
{
@@ -72,18 +89,16 @@
{
// cleanup resources obtained by filters
if (recoveryFilters != null)
-@@ -1268,7 +1280,9 @@
+@@ -1268,7 +1279,7 @@
errorLog.close();
index.close();
getContext().destroy();
- closed = true;
+ closed.set(true);
-+ resumeWaitingThreads();
-+
log.info("Index closed: " + path);
}
}
-@@ -1546,7 +1560,7 @@
+@@ -1546,7 +1557,7 @@
protected IndexReader getIndexReader(boolean includeSystemIndex) throws IOException
{
// deny query execution if index in offline mode and allowQuery is false
@@ -92,7 +107,7 @@
{
throw new IndexOfflineIOException("Index is offline");
}
-@@ -3202,7 +3216,7 @@
+@@ -3202,7 +3213,7 @@
*/
private void checkOpen() throws IOException
{
@@ -101,7 +116,7 @@
{
throw new IOException("query handler closed and cannot be used anymore.");
}
-@@ -3358,11 +3372,11 @@
+@@ -3358,11 +3369,11 @@
checkOpen();
if (isOnline)
{
@@ -115,7 +130,7 @@
}
index.setOnline(isOnline, dropStaleIndexes);
}
-@@ -3380,10 +3394,10 @@
+@@ -3380,10 +3391,10 @@
*/
public void suspend() throws SuspendException
{
@@ -128,7 +143,7 @@
}
/**
-@@ -3393,12 +3407,12 @@
+@@ -3393,12 +3404,12 @@
{
try
{
@@ -144,7 +159,7 @@
}
catch (IOException e)
{
-@@ -3415,7 +3429,7 @@
+@@ -3415,7 +3426,7 @@
*/
public boolean isSuspended()
{
@@ -153,7 +168,7 @@
}
/**
-@@ -3426,11 +3440,11 @@
+@@ -3426,11 +3437,11 @@
*/
private void waitForResuming() throws IOException
{
@@ -167,25 +182,25 @@
}
catch (InterruptedException e)
{
-@@ -3440,6 +3454,18 @@
+@@ -3440,11 +3451,15 @@
}
/**
+- * {@inheritDoc}
+ * Count down latcher which makes for resuming all
+ * waiting threads.
-+ */
-+ private void resumeWaitingThreads()
-+ {
+ */
+- public int getPriority()
++ public void resumeWaitingThreads()
+ {
+- return PRIORITY_NORMAL;
+ if (latcher.get() != null)
+ {
+ latcher.get().countDown();
+ }
-+ }
-+
-+ /**
- * {@inheritDoc}
- */
- public int getPriority()
+ }
+
+ /**
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (revision 5970)
@@ -461,8 +476,20 @@
{
parentSearchManager.suspend();
}
-@@ -1202,7 +1203,7 @@
+@@ -698,6 +699,11 @@
+
+ public void stop()
{
++ if (handler instanceof SearchIndex)
++ {
++ ((SearchIndex)handler).resumeWaitingThreads();
++ }
++
+ handler.close();
+ // ChangesFiler instance is one for both SearchManagers and close() must be invoked only once,
+ if (parentSearchManager != null)
+@@ -1202,7 +1208,7 @@
+ {
if (rpcService != null)
{
- isResponsibleForResuming = true;
@@ -470,7 +497,7 @@
try
{
-@@ -1228,7 +1229,7 @@
+@@ -1228,7 +1234,7 @@
*/
public boolean isSuspended()
{
@@ -479,7 +506,7 @@
}
/**
-@@ -1275,7 +1276,7 @@
+@@ -1275,7 +1281,7 @@
throw new ResumeException(e);
}
@@ -488,7 +515,7 @@
}
else
{
-@@ -1303,10 +1304,10 @@
+@@ -1303,10 +1309,10 @@
throw new IllegalStateException(
"Index is not in READ_WRITE mode and reindexing can't be launched. Please start reindexing on coordinator node.");
}
@@ -501,7 +528,7 @@
}
log.info("Starting hot reindexing on the " + handler.getContext().getRepositoryName() + "/"
-@@ -1321,7 +1322,7 @@
+@@ -1321,7 +1327,7 @@
hotReindexingState = "Running. Started at " + sdf.format(Calendar.getInstance().getTime());
try
{
@@ -510,7 +537,7 @@
// set offline cluster wide (will make merger disposed and volatile flushed)
if (rpcService != null && changesFilter.isShared())
{
-@@ -1399,7 +1400,7 @@
+@@ -1399,7 +1405,7 @@
hotReindexingState = "Stopped with errors at " + sdf.format(Calendar.getInstance().getTime());
log.info("Reindexing halted with errors.");
}
@@ -519,7 +546,7 @@
}
}
}, "HotReindexing-" + handler.getContext().getRepositoryName() + "-"
-@@ -1512,7 +1513,7 @@
+@@ -1512,7 +1518,7 @@
public Serializable execute(Serializable[] args) throws Throwable
{
@@ -528,16 +555,18 @@
}
});
-@@ -1542,27 +1543,27 @@
+@@ -1542,27 +1548,27 @@
throw new SuspendException("Can't suspend index, while reindexing in progeress.");
}
- if (!isSuspended)
+ if (!isSuspended.get())
{
- if (handler instanceof Suspendable)
+- if (handler instanceof Suspendable)
++ if (handler instanceof SearchIndex)
{
- ((Suspendable)handler).suspend();
+- ((Suspendable)handler).suspend();
++ ((SearchIndex)handler).suspend();
}
- isSuspended = true;
@@ -550,9 +579,11 @@
- if (isSuspended)
+ if (isSuspended.get())
{
- if (handler instanceof Suspendable)
+- if (handler instanceof Suspendable)
++ if (handler instanceof SearchIndex)
{
- ((Suspendable)handler).resume();
+- ((Suspendable)handler).resume();
++ ((SearchIndex)handler).resume();
}
- isSuspended = false;
@@ -560,7 +591,7 @@
}
}
-@@ -1571,7 +1572,7 @@
+@@ -1571,7 +1577,7 @@
*/
public void onChange(TopologyChangeEvent event)
{
12 years, 1 month
exo-jcr SVN: r5973 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query: lucene and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-28 03:22:01 -0400 (Wed, 28 Mar 2012)
New Revision: 5973
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-27 12:34:58 UTC (rev 5972)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2012-03-28 07:22:01 UTC (rev 5973)
@@ -701,6 +701,12 @@
public void stop()
{
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)
{
@@ -1545,9 +1551,9 @@
if (!isSuspended.get())
{
- if (handler instanceof Suspendable)
+ if (handler instanceof SearchIndex)
{
- ((Suspendable)handler).suspend();
+ ((SearchIndex)handler).suspend();
}
isSuspended.set(true);
@@ -1558,9 +1564,9 @@
{
if (isSuspended.get())
{
- if (handler instanceof Suspendable)
+ if (handler instanceof SearchIndex)
{
- ((Suspendable)handler).resume();
+ ((SearchIndex)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-27 12:34:58 UTC (rev 5972)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2012-03-28 07:22:01 UTC (rev 5973)
@@ -55,7 +55,6 @@
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;
@@ -108,7 +107,7 @@
* Implements a {@link org.apache.jackrabbit.core.query.QueryHandler} using
* Lucene.
*/
-public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener, Suspendable
+public class SearchIndex extends AbstractQueryHandler implements IndexerIoModeListener
{
private static final DefaultQueryNodeFactory DEFAULT_QUERY_NODE_FACTORY = new DefaultQueryNodeFactory();
@@ -1285,7 +1284,6 @@
index.close();
getContext().destroy();
closed.set(true);
- resumeWaitingThreads();
log.info("Index closed: " + path);
}
@@ -3424,7 +3422,7 @@
* Count down latcher which makes for resuming all
* waiting threads.
*/
- private void resumeWaitingThreads()
+ public void resumeWaitingThreads()
{
if (latcher.get() != null)
{
@@ -3433,14 +3431,6 @@
}
/**
- * {@inheritDoc}
- */
- public int getPriority()
- {
- return PRIORITY_NORMAL;
- }
-
- /**
* @return the indexingThreadPoolSize
*/
public Integer getIndexingThreadPoolSize()
12 years, 1 month
exo-jcr SVN: r5972 - jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-27 08:34:58 -0400 (Tue, 27 Mar 2012)
New Revision: 5972
Modified:
jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch
Log:
JCR-1717: patch proposed
Modified: jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch 2012-03-27 11:36:03 UTC (rev 5971)
+++ jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1717/JCR-1717.patch 2012-03-27 12:34:58 UTC (rev 5972)
@@ -1,6 +1,6 @@
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/PersistentDataManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/PersistentDataManager.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/PersistentDataManager.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/PersistentDataManager.java (working copy)
@@ -20,6 +20,7 @@
@@ -21,7 +21,7 @@
void addItemPersistenceListener(ItemsPersistenceListener listener);
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (working copy)
@@ -39,6 +39,9 @@
import org.exoplatform.services.jcr.datamodel.QPath;
@@ -129,7 +129,7 @@
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (working copy)
@@ -45,6 +45,9 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
@@ -186,7 +186,7 @@
* Working constructor.
*
* @throws RepositoryConfigurationException
-@@ -819,26 +835,29 @@
+@@ -819,26 +835,31 @@
*/
public void close()
{
@@ -216,6 +216,8 @@
+ index.close();
+ getContext().destroy();
+ closed.set(true);
++ resumeWaitingThreads();
++
+ log.info("Index closed: " + path);
}
- if (spellChecker != null)
@@ -230,7 +232,7 @@
}
/**
-@@ -866,6 +885,8 @@
+@@ -866,6 +887,8 @@
public MultiColumnQueryHits executeQuery(SessionImpl session, AbstractQueryImpl queryImpl, Query query,
QPath[] orderProps, boolean[] orderSpecs, long resultFetchHint) throws IOException, RepositoryException
{
@@ -239,7 +241,7 @@
checkOpen();
Sort sort = new Sort(createSortFields(orderProps, orderSpecs));
-@@ -914,6 +935,8 @@
+@@ -914,6 +937,8 @@
public MultiColumnQueryHits executeQuery(SessionImpl session, MultiColumnQuery query, QPath[] orderProps,
boolean[] orderSpecs, long resultFetchHint) throws IOException, RepositoryException
{
@@ -248,7 +250,7 @@
checkOpen();
Sort sort = new Sort(createSortFields(orderProps, orderSpecs));
-@@ -2606,7 +2629,7 @@
+@@ -2606,7 +2631,7 @@
*/
private void checkOpen() throws IOException
{
@@ -257,7 +259,7 @@
{
throw new IOException("query handler closed and cannot be used anymore.");
}
-@@ -2710,6 +2733,8 @@
+@@ -2710,6 +2735,8 @@
*/
public QueryHits executeQuery(Query query) throws IOException
{
@@ -266,7 +268,7 @@
checkOpen();
IndexReader reader = getIndexReader(true);
-@@ -2742,4 +2767,76 @@
+@@ -2742,4 +2769,88 @@
log.error("Can not recover error log.", e);
}
}
@@ -292,7 +294,7 @@
+ closed.set(false);
+ doInit();
+
-+ latcher.get().countDown();
++ resumeWaitingThreads();
+
+ isSuspended.set(false);
+ }
@@ -336,6 +338,18 @@
+ }
+
+ /**
++ * Count down latcher which makes for resuming all
++ * waiting threads.
++ */
++ private void resumeWaitingThreads()
++ {
++ if (latcher.get() != null)
++ {
++ latcher.get().countDown();
++ }
++ }
++
++ /**
+ * {@inheritDoc}
+ */
+ public int getPriority()
@@ -345,7 +359,7 @@
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (working copy)
@@ -50,6 +50,7 @@
import java.util.concurrent.Callable;
@@ -504,7 +518,7 @@
// wait for the index merge to finish pending jobs
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java (working copy)
@@ -137,6 +137,11 @@
private int state = OFFLINE;
@@ -652,9 +666,9 @@
+}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (working copy)
-@@ -30,6 +30,9 @@
+@@ -30,17 +30,24 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
@@ -664,7 +678,12 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache;
import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCStorageConnection;
-@@ -41,6 +44,9 @@
+ import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
+ import org.exoplatform.services.transaction.TransactionService;
++import org.picocontainer.Startable;
+
+ import java.util.ArrayList;
+ import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CountDownLatch;
@@ -674,16 +693,16 @@
import javax.jcr.RepositoryException;
import javax.transaction.TransactionManager;
-@@ -54,7 +60,7 @@
+@@ -54,7 +61,7 @@
*
* @version $Id$
*/
-public class CacheableWorkspaceDataManager extends WorkspacePersistentDataManager
-+public class CacheableWorkspaceDataManager extends WorkspacePersistentDataManager implements Suspendable
++public class CacheableWorkspaceDataManager extends WorkspacePersistentDataManager implements Suspendable, Startable
{
/**
-@@ -70,6 +76,21 @@
+@@ -70,6 +77,26 @@
private TransactionManager transactionManager;
/**
@@ -697,6 +716,11 @@
+ protected final AtomicBoolean isSuspended = new AtomicBoolean(false);
+
+ /**
++ * Indicates if component stopped or not.
++ */
++ protected final AtomicBoolean isStopped = new AtomicBoolean(false);
++
++ /**
+ * Allows to make all threads waiting until resume.
+ */
+ protected final AtomicReference<CountDownLatch> latcher = new AtomicReference<CountDownLatch>();
@@ -705,7 +729,7 @@
* ItemData request, used on get operations.
*
*/
-@@ -536,6 +557,39 @@
+@@ -536,6 +563,44 @@
@Override
public void save(final ItemStateChangesLog changesLog) throws RepositoryException
{
@@ -742,10 +766,15 @@
+
+ private void doSave(final ItemStateChangesLog changesLog) throws RepositoryException
+ {
++ if (isStopped.get())
++ {
++ throw new RepositoryException("Data container is stopped");
++ }
++
if (isTxAware())
{
// save in dedicated XA transaction
-@@ -952,4 +1006,75 @@
+@@ -952,4 +1017,93 @@
conn.close();
}
}
@@ -806,7 +835,7 @@
+ }
+ }
+
-+ private void resumeLocally() throws ResumeException
++ private void resumeLocally()
+ {
+ if (isSuspended.get())
+ {
@@ -822,10 +851,28 @@
+ {
+ return PRIORITY_HIGH;
+ }
++
++ /**
++ * {@inheritDoc}
++ */
++ public void start()
++ {
++ isStopped.set(false);
++ }
++
++ /**
++ * {@inheritDoc}
++ */
++ public void stop()
++ {
++ isStopped.set(true);
++ resumeLocally();
++ }
++
+}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java (working copy)
@@ -29,6 +29,7 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
@@ -1077,7 +1124,7 @@
+}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java (working copy)
@@ -62,6 +62,16 @@
final int READONLY = 2;
@@ -1108,7 +1155,7 @@
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java (revision 5967)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java (revision 5971)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java (working copy)
@@ -18,8 +18,18 @@
*/
12 years, 1 month
exo-jcr SVN: r5971 - jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-27 07:36:03 -0400 (Tue, 27 Mar 2012)
New Revision: 5971
Modified:
jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
Log:
JCR-1725: patch proposed
Modified: jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch
===================================================================
--- jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-27 11:10:27 UTC (rev 5970)
+++ jcr/branches/1.14.x/patch/1.14.8-GA/JCR-1725/JCR-1725.patch 2012-03-27 11:36:03 UTC (rev 5971)
@@ -1,6 +1,6 @@
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5957)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (revision 5970)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java (working copy)
@@ -81,8 +81,20 @@
import java.lang.reflect.Constructor;
@@ -72,16 +72,18 @@
{
// cleanup resources obtained by filters
if (recoveryFilters != null)
-@@ -1268,7 +1280,7 @@
+@@ -1268,7 +1280,9 @@
errorLog.close();
index.close();
getContext().destroy();
- closed = true;
+ closed.set(true);
++ resumeWaitingThreads();
++
log.info("Index closed: " + path);
}
}
-@@ -1546,7 +1558,7 @@
+@@ -1546,7 +1560,7 @@
protected IndexReader getIndexReader(boolean includeSystemIndex) throws IOException
{
// deny query execution if index in offline mode and allowQuery is false
@@ -90,7 +92,7 @@
{
throw new IndexOfflineIOException("Index is offline");
}
-@@ -3202,7 +3214,7 @@
+@@ -3202,7 +3216,7 @@
*/
private void checkOpen() throws IOException
{
@@ -99,7 +101,7 @@
{
throw new IOException("query handler closed and cannot be used anymore.");
}
-@@ -3358,11 +3370,11 @@
+@@ -3358,11 +3372,11 @@
checkOpen();
if (isOnline)
{
@@ -113,7 +115,7 @@
}
index.setOnline(isOnline, dropStaleIndexes);
}
-@@ -3380,10 +3392,10 @@
+@@ -3380,10 +3394,10 @@
*/
public void suspend() throws SuspendException
{
@@ -126,7 +128,7 @@
}
/**
-@@ -3393,12 +3405,12 @@
+@@ -3393,12 +3407,12 @@
{
try
{
@@ -135,14 +137,14 @@
doInit();
- latcher.countDown();
-+ latcher.get().countDown();
++ resumeWaitingThreads();
- isSuspended = false;
+ isSuspended.set(false);
}
catch (IOException e)
{
-@@ -3415,7 +3427,7 @@
+@@ -3415,7 +3429,7 @@
*/
public boolean isSuspended()
{
@@ -151,7 +153,7 @@
}
/**
-@@ -3426,11 +3438,11 @@
+@@ -3426,11 +3440,11 @@
*/
private void waitForResuming() throws IOException
{
@@ -165,9 +167,28 @@
}
catch (InterruptedException e)
{
+@@ -3440,6 +3454,18 @@
+ }
+
+ /**
++ * Count down latcher which makes for resuming all
++ * waiting threads.
++ */
++ private void resumeWaitingThreads()
++ {
++ if (latcher.get() != null)
++ {
++ latcher.get().countDown();
++ }
++ }
++
++ /**
+ * {@inheritDoc}
+ */
+ public int getPriority()
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (revision 5957)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (revision 5970)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java (working copy)
@@ -65,6 +65,7 @@
import java.util.concurrent.Callable;
@@ -388,7 +409,7 @@
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (revision 5957)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (revision 5970)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (working copy)
@@ -104,6 +104,7 @@
import java.util.NoSuchElementException;
@@ -550,7 +571,7 @@
{
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (revision 5957)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (revision 5970)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (working copy)
@@ -74,6 +74,7 @@
import java.util.concurrent.CountDownLatch;
@@ -560,7 +581,7 @@
import javax.jcr.RepositoryException;
import javax.transaction.Status;
-@@ -141,17 +142,17 @@
+@@ -141,17 +142,22 @@
/**
* Indicates if component suspended or not.
*/
@@ -568,6 +589,11 @@
+ protected final AtomicBoolean isSuspended = new AtomicBoolean(false);
/**
++ * Indicates if component stopped or not.
++ */
++ protected final AtomicBoolean isStopped = new AtomicBoolean(false);
++
++ /**
* Allows to make all threads waiting until resume.
*/
- protected CountDownLatch latcher = null;
@@ -581,7 +607,7 @@
/**
* Request to all nodes to check if there is someone who responsible for resuming.
-@@ -927,11 +928,11 @@
+@@ -927,11 +933,11 @@
*/
public void save(final ItemStateChangesLog changesLog) throws RepositoryException
{
@@ -595,7 +621,7 @@
}
catch (InterruptedException e)
{
-@@ -971,7 +972,7 @@
+@@ -971,7 +977,7 @@
{
workingThreads.decrementAndGet();
@@ -604,8 +630,20 @@
{
synchronized (workingThreads)
{
-@@ -1933,7 +1934,7 @@
+@@ -983,6 +989,11 @@
+
+ private void doSave(final ItemStateChangesLog changesLog) throws RepositoryException
{
++ if (isStopped.get())
++ {
++ throw new RepositoryException("Data container is stopped");
++ }
++
+ ChangesLogWrapper logWrapper = new ChangesLogWrapper(changesLog);
+
+ if (isTxAware())
+@@ -1933,7 +1944,7 @@
+ {
if (rpcService != null)
{
- isResponsibleForResuming = true;
@@ -613,7 +651,7 @@
try
{
-@@ -1974,7 +1975,7 @@
+@@ -1974,7 +1985,7 @@
throw new ResumeException(e);
}
@@ -622,7 +660,7 @@
}
else
{
-@@ -1987,15 +1988,15 @@
+@@ -1987,15 +1998,15 @@
*/
public boolean isSuspended()
{
@@ -642,9 +680,12 @@
if (workingThreads.get() > 0)
{
-@@ -2022,10 +2023,10 @@
+@@ -2020,12 +2031,12 @@
+ }
+ }
- private void resumeLocally() throws ResumeException
+- private void resumeLocally() throws ResumeException
++ private void resumeLocally()
{
- if (isSuspended)
+ if (isSuspended.get())
@@ -656,7 +697,7 @@
}
}
-@@ -2034,7 +2035,7 @@
+@@ -2034,7 +2045,7 @@
*/
public void onChange(TopologyChangeEvent event)
{
@@ -665,8 +706,24 @@
{
new Thread()
{
-@@ -2127,7 +2128,7 @@
+@@ -2054,14 +2065,7 @@
+ }
+ // node which was responsible for resuming leave the cluster, so resume component
+- try
+- {
+- resumeLocally();
+- }
+- catch (ResumeException e)
+- {
+- LOG.error("Can not resume component", e);
+- }
++ resumeLocally();
+ }
+ catch (SecurityException e1)
+ {
+@@ -2127,7 +2131,7 @@
+
public Serializable execute(Serializable[] args) throws Throwable
{
- return isResponsibleForResuming;
@@ -674,3 +731,22 @@
}
});
+@@ -2377,6 +2381,8 @@
+ */
+ public void start()
+ {
++ isStopped.set(false);
++
+ try
+ {
+ this.cache.addListener(this);
+@@ -2478,6 +2484,9 @@
+ {
+ cache.removeListener(this);
+ }
++
++ isStopped.set(true);
++ resumeLocally();
+ }
+
+ /**
12 years, 1 month
exo-jcr SVN: r5970 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: dataflow/persistent and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-27 07:10:27 -0400 (Tue, 27 Mar 2012)
New Revision: 5970
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/dataflow/persistent/CacheableWorkspaceDataManager.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/lucene/SearchIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2012-03-27 08:05:47 UTC (rev 5969)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2012-03-27 11:10:27 UTC (rev 5970)
@@ -1285,6 +1285,8 @@
index.close();
getContext().destroy();
closed.set(true);
+ resumeWaitingThreads();
+
log.info("Index closed: " + path);
}
}
@@ -3375,7 +3377,7 @@
closed.set(false);
doInit();
- latcher.get().countDown();
+ resumeWaitingThreads();
isSuspended.set(false);
}
@@ -3419,6 +3421,18 @@
}
/**
+ * Count down latcher which makes for resuming all
+ * waiting threads.
+ */
+ private void resumeWaitingThreads()
+ {
+ if (latcher.get() != null)
+ {
+ latcher.get().countDown();
+ }
+ }
+
+ /**
* {@inheritDoc}
*/
public int getPriority()
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2012-03-27 08:05:47 UTC (rev 5969)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2012-03-27 11:10:27 UTC (rev 5970)
@@ -142,9 +142,14 @@
/**
* Indicates if component suspended or not.
*/
- protected final AtomicBoolean isSuspended = new AtomicBoolean(false);;
+ protected final AtomicBoolean isSuspended = new AtomicBoolean(false);
/**
+ * Indicates if component stopped or not.
+ */
+ protected final AtomicBoolean isStopped = new AtomicBoolean(false);
+
+ /**
* Allows to make all threads waiting until resume.
*/
protected final AtomicReference<CountDownLatch> latcher = new AtomicReference<CountDownLatch>();
@@ -973,6 +978,11 @@
private void doSave(final ItemStateChangesLog changesLog) throws RepositoryException
{
+ if (isStopped.get())
+ {
+ throw new RepositoryException("Data container is stopped");
+ }
+
ChangesLogWrapper logWrapper = new ChangesLogWrapper(changesLog);
if (isTxAware())
@@ -2009,7 +2019,7 @@
}
}
- private void resumeLocally() throws ResumeException
+ private void resumeLocally()
{
if (isSuspended.get())
{
@@ -2043,14 +2053,7 @@
}
// node which was responsible for resuming leave the cluster, so resume component
- try
- {
- resumeLocally();
- }
- catch (ResumeException e)
- {
- LOG.error("Can not resume component", e);
- }
+ resumeLocally();
}
catch (SecurityException e1)
{
@@ -2366,6 +2369,8 @@
*/
public void start()
{
+ isStopped.set(false);
+
try
{
this.cache.addListener(this);
@@ -2467,6 +2472,9 @@
{
cache.removeListener(this);
}
+
+ isStopped.set(true);
+ resumeLocally();
}
/**
12 years, 1 month