[exo-jcr-commits] exo-jcr SVN: r1182 - in jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query: jbosscache and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Dec 25 06:46:14 EST 2009


Author: nzamosenchuk
Date: 2009-12-25 06:46:14 -0500 (Fri, 25 Dec 2009)
New Revision: 1182

Modified:
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexInfos.java
Log:
EXOJCR-334: IndexerCacheLoader updates index on prepare and does nothing on commit. JbossCacheIndex filter and index infos pushes to cache only if transaction is present with ACTIVE status or no transaction present. SearchManager doesn't store log before it is started.

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java	2009-12-25 11:14:40 UTC (rev 1181)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java	2009-12-25 11:46:14 UTC (rev 1182)
@@ -137,11 +137,6 @@
    protected IndexerChangesFilter changesFilter;
 
    /**
-    * ChangesLog Buffer (used for saves before start).
-    */
-   private List<ItemStateChangesLog> changesLogBuffer = new ArrayList<ItemStateChangesLog>();
-
-   /**
     * Creates a new <code>SearchManager</code>.
     * 
     * @param config
@@ -379,12 +374,8 @@
       if (itemStates.getSize() > 0)
       {
          //Check if SearchManager started and filter configured
-         if (changesFilter == null)
+         if (changesFilter != null)
          {
-            changesLogBuffer.add(itemStates);
-         }
-         else
-         {
             changesFilter.onSaveItems(itemStates);
          }
       }
@@ -461,16 +452,6 @@
          }
          initializeQueryHandler();
 
-         if (changesLogBuffer.size() > 0)
-         {
-            for (ItemStateChangesLog bufferedChangesLog : changesLogBuffer)
-            {
-               onSaveItems(bufferedChangesLog);
-            }
-            changesLogBuffer.clear();
-            changesLogBuffer = null;
-         }
-
       }
       catch (RepositoryException e)
       {

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java	2009-12-25 11:14:40 UTC (rev 1181)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java	2009-12-25 11:46:14 UTC (rev 1182)
@@ -23,8 +23,6 @@
 import org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
-import org.jboss.cache.CacheException;
-import org.jboss.cache.Fqn;
 import org.jboss.cache.Modification;
 import org.jboss.cache.Modification.ModificationType;
 
@@ -52,6 +50,15 @@
    private QueryHandler parentHandler;
 
    /**
+    * @see org.jboss.cache.loader.AbstractCacheLoader#commit(java.lang.Object)
+    */
+   @Override
+   public void commit(Object tx) throws Exception
+   {
+      // do nothing. Everything is done on prepare phase.
+   }
+
+   /**
     * Inject dependencies needed for CacheLoader: SearchManagers and QueryHandlers. 
     * 
     * @param searchManager
@@ -70,31 +77,64 @@
    }
 
    /**
-    * @see org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader#put(org.jboss.cache.Fqn, java.lang.Object, java.lang.Object)
+    * @see org.jboss.cache.loader.AbstractCacheLoader#prepare(java.lang.Object, java.util.List, boolean)
     */
    @Override
-   public Object put(Fqn arg0, Object key, Object val) throws Exception
+   public void prepare(Object tx, List<Modification> modifications, boolean onePhase) throws Exception
    {
-      log.info("Entering PUT.");
-      try
+      // update index on prepare phase
+      for (Modification m : modifications)
       {
-         if (key.equals(JbossCacheIndexChangesFilter.LISTWRAPPER) && val instanceof ChangesFilterListsWrapper)
+         // this is put-key-value modification
+         if (m.getType() == ModificationType.PUT_KEY_VALUE)
          {
-            if (log.isDebugEnabled())
+            if (m.getKey().equals(JbossCacheIndexChangesFilter.LISTWRAPPER)
+               && m.getValue() instanceof ChangesFilterListsWrapper)
             {
-               log.info("Received list wrapper, start indexing...");
+               if (log.isDebugEnabled())
+               {
+                  log.info("Received list wrapper, start indexing...");
+               }
+               // updating index
+               ChangesFilterListsWrapper wrapper = (ChangesFilterListsWrapper)m.getValue();
+               updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(), wrapper.getParentAddedNodes(), wrapper
+                  .getParentRemovedNodes());
             }
-            ChangesFilterListsWrapper wrapper = (ChangesFilterListsWrapper)val;
-            //System.out.println("UPDATE INDEX: "+wrapper.getAddedNodes() + wrapper.getRemovedNodes());
-            updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(), wrapper.getParentAddedNodes(), wrapper
-               .getParentRemovedNodes());
          }
       }
-      catch (Exception e)
+   }
+
+   /**
+    * @see org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader#put(java.util.List)
+    */
+   @Override
+   public void put(List<Modification> modifications) throws Exception
+   {
+      // do nothing. Index is updated on prepare phase.
+   }
+
+   /**
+    * Switches Indexer mode from RO to RW, or from RW to RO
+    * 
+    * @param ioMode
+    */
+   public void setMode(IndexerIoMode ioMode)
+   {
+      try
       {
-         e.printStackTrace();
+         if (handler != null)
+         {
+            handler.setIndexerIoMode(ioMode);
+         }
+         if (parentHandler != null)
+         {
+            parentHandler.setIndexerIoMode(ioMode);
+         }
       }
-      return null;
+      catch (IOException e)
+      {
+         log.error("Unable to set indexer mode to " + ioMode, e);
+      }
    }
 
    /**
@@ -158,48 +198,4 @@
       }
    }
 
-   /**
-    * Switches Indexer mode from RO to RW, or from RW to RO
-    * 
-    * @param ioMode
-    */
-   public void setMode(IndexerIoMode ioMode)
-   {
-      try
-      {
-         if (handler != null)
-         {
-            handler.setIndexerIoMode(ioMode);
-         }
-         if (parentHandler != null)
-         {
-            parentHandler.setIndexerIoMode(ioMode);
-         }
-      }
-      catch (IOException e)
-      {
-         log.error("Unable to set indexer mode to " + ioMode, e);
-      }
-   }
-
-   /**
-    * @see org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader#put(java.util.List)
-    */
-   @Override
-   public void put(List<Modification> modifications) throws Exception
-   {
-   }
-
-   @Override
-   public void prepare(Object tx, List<Modification> modifications, boolean onePhase) throws Exception
-   {
-      log.info("Entering PREPARE.");
-      for (Modification m : modifications)
-      {
-         if (m.getType() == ModificationType.PUT_KEY_VALUE)
-         {
-            put(m.getFqn(), m.getKey(), m.getValue());
-         }
-      }
-   }
 }

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java	2009-12-25 11:14:40 UTC (rev 1181)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java	2009-12-25 11:46:14 UTC (rev 1182)
@@ -26,7 +26,6 @@
 import org.exoplatform.services.jcr.impl.core.query.IndexingTree;
 import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
 import org.exoplatform.services.jcr.impl.core.query.SearchManager;
-import org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache;
 import org.exoplatform.services.jcr.util.IdGenerator;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
@@ -155,7 +154,7 @@
             cache.put(id, LISTWRAPPER, new ChangesFilterListsWrapper(addedNodes, removedNodes, parentAddedNodes,
                parentRemovedNodes));
          }
-         else
+         else if (tm.getStatus() == Status.STATUS_NO_TRANSACTION)
          {
             // no active transaction, creating new one
             tm.begin();

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexInfos.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexInfos.java	2009-12-25 11:14:40 UTC (rev 1181)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexInfos.java	2009-12-25 11:46:14 UTC (rev 1182)
@@ -154,7 +154,7 @@
             {
                cache.put(namesFqn, LIST_KEY, getNames());
             }
-            else
+            else if (tm.getStatus() == Status.STATUS_NO_TRANSACTION)
             {
                // no active transaction, creating new one
                tm.begin();



More information about the exo-jcr-commits mailing list