[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