[exo-jcr-commits] exo-jcr SVN: r963 - jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Dec 9 06:26:19 EST 2009


Author: nzamosenchuk
Date: 2009-12-09 06:26:18 -0500 (Wed, 09 Dec 2009)
New Revision: 963

Modified:
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerSingletonStoreCacheLoader.java
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
Log:
EXOJCR-291: Cleaned and updated code of CacheLoader.

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java	2009-12-09 11:05:28 UTC (rev 962)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java	2009-12-09 11:26:18 UTC (rev 963)
@@ -17,6 +17,7 @@
 package org.exoplatform.services.jcr.impl.core.query.jbosscache;
 
 import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.impl.core.query.IndexerIoMode;
 import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
 import org.exoplatform.services.jcr.impl.core.query.SearchManager;
 import org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader;
@@ -57,70 +58,18 @@
       this.parentHandler = parentHandler;
    }
 
+   /**
+    * @see org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader#put(org.jboss.cache.Fqn, java.lang.Object, java.lang.Object)
+    */
    @Override
-   public void put(List<Modification> modifications) throws Exception
+   public Object put(Fqn arg0, Object key, Object val) throws Exception
    {
-      // FOR TESTING PURPOSES, avoid batches, use single puts.
-      for (Modification m : modifications)
+      if (key.equals(JbossCacheIndexChangesFilter.LISTWRAPPER) && val instanceof ChangesFilterListsWrapper)
       {
-         switch (m.getType())
+         if (log.isDebugEnabled())
          {
-            case PUT_KEY_VALUE :
-               put(m.getFqn(), m.getKey(), m.getValue());
-               break;
-            case REMOVE_DATA :
+            log.info("Received list wrapper, start indexing...");
          }
-      }
-      // This code was used if batching. 
-      //         if (log.isDebugEnabled())
-      //         {
-      //            log.info("Received list of modifications");
-      //         }
-      //         final Set<String> addedNodes = new HashSet<String>();
-      //         final Set<String> removedNodes = new HashSet<String>();
-      //   
-      //         final Set<String> parentAddedNodes = new HashSet<String>();
-      //         final Set<String> parentRemovedNodes = new HashSet<String>();
-      //         for (Modification m : modifications)
-      //         {
-      //   
-      //            if (m.getType() == ModificationType.PUT_KEY_VALUE && m.getFqn().size() == 1)
-      //            {
-      //               if (m.getKey().equals(JbossCacheIndexChangesFilter.ADDED) && m.getValue() instanceof Set<?>)
-      //               {
-      //                  addedNodes.addAll((Set<String>)m.getValue());
-      //               }
-      //               else if (m.getKey().equals(JbossCacheIndexChangesFilter.REMOVED) && m.getValue() instanceof Set<?>)
-      //               {
-      //                  removedNodes.addAll((Set<String>)m.getValue());
-      //               }
-      //               if (m.getKey().equals(JbossCacheIndexChangesFilter.PARENT_ADDED) && m.getValue() instanceof Set<?>)
-      //               {
-      //                  parentAddedNodes.addAll((Set<String>)m.getValue());
-      //               }
-      //               else if (m.getKey().equals(JbossCacheIndexChangesFilter.PARENT_REMOVED) && m.getValue() instanceof Set<?>)
-      //               {
-      //                  parentRemovedNodes.addAll((Set<String>)m.getValue());
-      //               }
-      //            }
-      //            else
-      //            {
-      //               if (log.isDebugEnabled())
-      //               {
-      //                  log.info("Received " + m.getType() + " modification, skipping...");
-      //               }
-      //            }
-      //         }
-      //         updateIndex(addedNodes, removedNodes, parentAddedNodes, parentRemovedNodes);
-
-   }
-
-   // Put used avoiding patching
-   @Override
-   public Object put(Fqn arg0, Object key, Object val) throws Exception
-   {
-      if (key.equals("key"))
-      {
          ChangesFilterListsWrapper wrapper = (ChangesFilterListsWrapper)val;
          log.info("Loader=" + this + " changes=" + wrapper.dump());
          updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(), wrapper.getParentAddedNodes(), wrapper
@@ -187,4 +136,52 @@
          }
       }
    }
+
+   /**
+    * Switches Indexer mode from RO to RW, or 
+    * 
+    * @param ioMode
+    */
+   public void setMode(IndexerIoMode ioMode)
+   {
+      if (handler != null)
+      {
+         try
+         {
+            handler.setIndexerIoMode(ioMode);
+         }
+         catch (IOException e)
+         {
+            log.error(e);
+         }
+         catch (RepositoryException e)
+         {
+            log.error(e);
+         }
+      }
+      if (parentHandler != null)
+      {
+         try
+         {
+            parentHandler.setIndexerIoMode(ioMode);
+         }
+         catch (IOException e)
+         {
+            log.error(e);
+         }
+         catch (RepositoryException e)
+         {
+            log.error(e);
+         }
+      }
+   }
+
+   /**
+    * @see org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader#put(java.util.List)
+    */
+   @Override
+   public void put(List<Modification> modifications) throws Exception
+   {
+      // batching is not used
+   }
 }

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerSingletonStoreCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerSingletonStoreCacheLoader.java	2009-12-09 11:05:28 UTC (rev 962)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerSingletonStoreCacheLoader.java	2009-12-09 11:26:18 UTC (rev 963)
@@ -18,6 +18,7 @@
  */
 package org.exoplatform.services.jcr.impl.core.query.jbosscache;
 
+import org.exoplatform.services.jcr.impl.core.query.IndexerIoMode;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
 import org.jboss.cache.Fqn;
@@ -31,7 +32,7 @@
 
 /**
  * @author <a href="mailto:nikolazius at gmail.com">Nikolay Zamosenchuk</a>
- * @version $Id: IndexerSingleStoraCacheLoader.java 34360 2009-07-22 23:58:59Z nzamosenchuk $
+ * @version $Id$
  *
  */
 public class IndexerSingletonStoreCacheLoader extends SingletonStoreCacheLoader
@@ -43,23 +44,19 @@
    protected void activeStatusChanged(boolean newActiveState) throws PushStateException
    {
       // at first change indexer mode
-      modeChanged(newActiveState);
+      // get base cache loader that is configured under SingletonStoreCacheLoader
+      // if it is IndexerCacheLoader need to call setMode(ioMode)
+      if (getCacheLoader() instanceof IndexerCacheLoader)
+      {
+         // if newActiveState is true IndexerCacheLoader is coordinator with write enabled;
+         ((IndexerCacheLoader)getCacheLoader()).setMode(newActiveState ? IndexerIoMode.READ_WRITE
+            : IndexerIoMode.READ_ONLY);
+      }
       // and them push states if needed
       super.activeStatusChanged(newActiveState);
 
    }
 
-   /**
-    * Changes indexer mode RO->RW, RW->RO
-    * 
-    * @param enableWrite
-    *          true when this node of cluster is coordinator, means that indexer is RW
-    *          false means that indexer is read only, and this node of cluster is no a coordinator
-    */
-   protected void modeChanged(boolean enableWrite)
-   {
-   }
-
    @Override
    protected Callable<?> createPushStateTask()
    {
@@ -82,26 +79,18 @@
             for (NodeSPI aChildren : children)
             {
                Fqn<?> fqn = aChildren.getFqn();
-               Object value = cache.get(fqn, JbossCacheIndexChangesFilter.ADDED);
-               if (value != null && value instanceof Set<?>)
+               Object value = cache.get(fqn, JbossCacheIndexChangesFilter.LISTWRAPPER);
+               if (value != null && value instanceof ChangesFilterListsWrapper)
                {
-                  addedNodes.addAll((Set<String>)value);
+                  // get wrapper object
+                  ChangesFilterListsWrapper listsWrapper = (ChangesFilterListsWrapper)value;
+                  // get search manager lists
+                  addedNodes.addAll(listsWrapper.getAddedNodes());
+                  removedNodes.addAll(listsWrapper.getRemovedNodes());
+                  // parent search manager lists
+                  parentAddedNodes.addAll(listsWrapper.getParentAddedNodes());
+                  parentRemovedNodes.addAll(listsWrapper.getParentAddedNodes());
                };
-               value = cache.get(fqn, JbossCacheIndexChangesFilter.REMOVED);
-               if (value != null && value instanceof Set<?>)
-               {
-                  removedNodes.addAll((Set<String>)value);
-               };
-               value = cache.get(fqn, JbossCacheIndexChangesFilter.PARENT_ADDED);
-               if (value != null && value instanceof Set<?>)
-               {
-                  parentAddedNodes.addAll((Set<String>)value);
-               };
-               value = cache.get(fqn, JbossCacheIndexChangesFilter.PARENT_REMOVED);
-               if (value != null && value instanceof Set<?>)
-               {
-                  parentRemovedNodes.addAll((Set<String>)value);
-               };
             }
             //TODO: recover logic is here, lists are: removedNodes and addedNodes
             if (debugEnabled)


Property changes on: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerSingletonStoreCacheLoader.java
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java	2009-12-09 11:05:28 UTC (rev 962)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java	2009-12-09 11:26:18 UTC (rev 963)
@@ -60,6 +60,8 @@
 
    public static String PARENT_REMOVED = "$premove".intern();
 
+   public static String LISTWRAPPER = "$lists".intern();
+
    /**
     * @param searchManager
     * @param config
@@ -94,8 +96,12 @@
       // set parameters
       individualCacheLoaderConfig.setFetchPersistentState(false);
       individualCacheLoaderConfig.setAsync(false);
+      individualCacheLoaderConfig.setIgnoreModifications(false);
+      individualCacheLoaderConfig.setPurgeOnStartup(false);
       // create CacheLoaderConfig
       CacheLoaderConfig cacheLoaderConfig = new CacheLoaderConfig();
+      cacheLoaderConfig.setShared(true);
+      cacheLoaderConfig.setPassivation(false);
       cacheLoaderConfig.addIndividualCacheLoaderConfig(individualCacheLoaderConfig);
       // insert CacheLoaderConfig
       this.cache.getConfiguration().setCacheLoaderConfig(cacheLoaderConfig);
@@ -111,17 +117,8 @@
       Set<String> parentAddedNodes)
    {
       String id = IdGenerator.generate();
-      cache.put(id, "key", new ChangesFilterListsWrapper(addedNodes, removedNodes, parentAddedNodes, parentRemovedNodes));
-/*      cache.startBatch();
-      String id = IdGenerator.generate();
-
-      cache.put(id, ADDED, addedNodes);
-      cache.put(id, PARENT_ADDED, parentAddedNodes);
-
-      cache.put(id, REMOVED, removedNodes);
-      cache.put(id, PARENT_REMOVED, parentRemovedNodes);
-
-      cache.endBatch(true);*/
+      cache.put(id, LISTWRAPPER, new ChangesFilterListsWrapper(addedNodes, removedNodes, parentAddedNodes,
+         parentRemovedNodes));
    }
 
 }



More information about the exo-jcr-commits mailing list