[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