[exo-jcr-commits] exo-jcr SVN: r2105 - in jcr/trunk/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/core/query/lucene and 1 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Mar 24 06:50:48 EDT 2010
Author: nzamosenchuk
Date: 2010-03-24 06:50:46 -0400 (Wed, 24 Mar 2010)
New Revision: 2105
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexUpdateMonitor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java
Log:
EXOJCR-589: Update in progress monitor has a parameter "persistent change" now. Default impl. doesn't care of it, but JBossCache impl. uses cache only if persistent change is performed.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexUpdateMonitor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexUpdateMonitor.java 2010-03-23 13:55:25 UTC (rev 2104)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexUpdateMonitor.java 2010-03-24 10:50:46 UTC (rev 2105)
@@ -54,6 +54,8 @@
private final Cache<Serializable, Object> cache;
+ private boolean localUpdateInProgress = false;
+
private static final String INDEX_PARAMETERS = "$index_parameters".intern();
private static final String SYSINDEX_PARAMETERS = "$sysindex_parameters".intern();
@@ -83,7 +85,6 @@
this.listeners = new CopyOnWriteArrayList<IndexUpdateMonitorListener>();
// store parsed FQN to avoid it's parsing each time cache event is generated
this.parametersFqn = Fqn.fromString(system ? INDEX_PARAMETERS : SYSINDEX_PARAMETERS);
-
modeHandler.addIndexerIoModeListener(this);
Node<Serializable, Object> cacheRoot = cache.getRoot();
@@ -100,7 +101,8 @@
if (IndexerIoMode.READ_WRITE == modeHandler.getMode())
{
- setUpdateInProgress(false);
+ // global, replicated set
+ setUpdateInProgress(false, true);
}
else
{
@@ -120,6 +122,8 @@
// In READ_WRITE, the value of UpdateInProgress is changed locally so no need to listen
// to the cache
cache.removeCacheListener(this);
+ // possibly indexer was terminated, so status should be reseted
+ setUpdateInProgress(false, true);
}
else
{
@@ -134,15 +138,23 @@
*/
public boolean getUpdateInProgress()
{
-
- Object value = cache.get(parametersFqn, PARAMETER_NAME);
- return value != null ? (Boolean)value : false;
+ if (IndexerIoMode.READ_ONLY == modeHandler.getMode())
+ {
+ Object value = cache.get(parametersFqn, PARAMETER_NAME);
+ return value != null ? (Boolean)value : false;
+ }
+ else
+ {
+ // this node is read-write, so must read local value.
+ // Local value is updated every time, but remote cache value is skipped is volatile changes are performed
+ return localUpdateInProgress;
+ }
}
/**
- * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#setUpdateInProgress(boolean)
+ * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#setUpdateInProgress(boolean, boolean)
*/
- public void setUpdateInProgress(boolean updateInProgress)
+ public void setUpdateInProgress(boolean updateInProgress, boolean persitentUpdate)
{
if (IndexerIoMode.READ_ONLY == modeHandler.getMode())
{
@@ -150,7 +162,13 @@
}
try
{
- cache.put(parametersFqn, PARAMETER_NAME, new Boolean(updateInProgress));
+ // anyway set local update in progress
+ localUpdateInProgress = updateInProgress;
+ if (persitentUpdate)
+ {
+ cache.put(parametersFqn, PARAMETER_NAME, new Boolean(updateInProgress));
+
+ }
for (IndexUpdateMonitorListener listener : listeners)
{
listener.onUpdateInProgressChange(updateInProgress);
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java 2010-03-23 13:55:25 UTC (rev 2104)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java 2010-03-24 10:50:46 UTC (rev 2105)
@@ -57,9 +57,9 @@
/**
*
- * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#setUpdateInProgress(boolean)
+ * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#setUpdateInProgress(boolean, boolean)
*/
- public void setUpdateInProgress(boolean updateInProgress)
+ public void setUpdateInProgress(boolean updateInProgress, boolean persitentUpdate)
{
this.updateInProgress.set(updateInProgress);
for (IndexUpdateMonitorListener listener : listeners)
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java 2010-03-23 13:55:25 UTC (rev 2104)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java 2010-03-24 10:50:46 UTC (rev 2105)
@@ -33,8 +33,9 @@
/**
* @param updateInProgress the updateInProgress to set
+ * @param persitentUpdate Additional information, identifying persistent index update
*/
- void setUpdateInProgress(boolean updateInProgress);
+ void setUpdateInProgress(boolean updateInProgress, boolean persitentUpdate);
/**
* Adds a new listener of type {@link IndexUpdateMonitorListener}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2010-03-23 13:55:25 UTC (rev 2104)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2010-03-24 10:50:46 UTC (rev 2105)
@@ -432,7 +432,7 @@
synchronized (updateMonitor)
{
//updateInProgress = true;
- indexUpdateMonitor.setUpdateInProgress(true);
+ indexUpdateMonitor.setUpdateInProgress(true, false);
}
try
{
@@ -467,7 +467,7 @@
synchronized (updateMonitor)
{
//updateInProgress = false;
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, false);
updateMonitor.notifyAll();
releaseMultiReader();
}
@@ -514,7 +514,7 @@
synchronized (updateMonitor)
{
//updateInProgress = true;
- indexUpdateMonitor.setUpdateInProgress(true);
+ indexUpdateMonitor.setUpdateInProgress(true, false);
}
int num;
try
@@ -547,7 +547,7 @@
synchronized (updateMonitor)
{
//updateInProgress = false;
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, false);
updateMonitor.notifyAll();
releaseMultiReader();
}
@@ -733,7 +733,7 @@
synchronized (updateMonitor)
{
//updateInProgress = true;
- indexUpdateMonitor.setUpdateInProgress(true);
+ indexUpdateMonitor.setUpdateInProgress(true, true);
}
try
{
@@ -781,7 +781,7 @@
synchronized (updateMonitor)
{
//updateInProgress = false;
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, true);
updateMonitor.notifyAll();
releaseMultiReader();
}
@@ -1395,7 +1395,7 @@
synchronized (updateMonitor)
{
//updateInProgress = true;
- indexUpdateMonitor.setUpdateInProgress(true);
+ indexUpdateMonitor.setUpdateInProgress(true, true);
}
try
{
@@ -1406,7 +1406,7 @@
synchronized (updateMonitor)
{
//updateInProgress = false;
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, true);
updateMonitor.notifyAll();
releaseMultiReader();
}
@@ -2415,7 +2415,7 @@
// Release all the current threads
synchronized (updateMonitor)
{
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, true);
updateMonitor.notifyAll();
releaseMultiReader();
}
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java 2010-03-23 13:55:25 UTC (rev 2104)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java 2010-03-24 10:50:46 UTC (rev 2105)
@@ -78,15 +78,15 @@
assertFalse(indexUpdateMonitor.getUpdateInProgress());
//test set false
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, true);
assertFalse(indexUpdateMonitor.getUpdateInProgress());
//test set true
- indexUpdateMonitor.setUpdateInProgress(true);
+ indexUpdateMonitor.setUpdateInProgress(true, true);
assertTrue(indexUpdateMonitor.getUpdateInProgress());
//test set false
- indexUpdateMonitor.setUpdateInProgress(false);
+ indexUpdateMonitor.setUpdateInProgress(false, true);
assertFalse(indexUpdateMonitor.getUpdateInProgress());
}
More information about the exo-jcr-commits
mailing list