Author: nzamosenchuk
Date: 2011-01-17 05:31:47 -0500 (Mon, 17 Jan 2011)
New Revision: 3813
Modified:
jcr/branches/1.14-IMPR/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
Log:
EXOJCR-1144 : fix: only RW node can remove from cache.
Modified:
jcr/branches/1.14-IMPR/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java
===================================================================
---
jcr/branches/1.14-IMPR/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java 2011-01-14
14:29:52 UTC (rev 3812)
+++
jcr/branches/1.14-IMPR/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java 2011-01-17
10:31:47 UTC (rev 3813)
@@ -62,7 +62,7 @@
{
// do nothing. Everything is done on prepare phase.
}
-
+
/**
* This method will register a new Indexer according to the given parameters.
*
@@ -77,7 +77,10 @@
{
indexers.put(Fqn.fromElements(searchManager.getWsId()), new Indexer(searchManager,
parentSearchManager, handler,
parentHandler));
- if (log.isDebugEnabled()) log.debug("Register " + searchManager.getWsId()
+ " " + this + " in " + indexers);
+ if (log.isDebugEnabled())
+ {
+ log.debug("Register " + searchManager.getWsId() + " " + this
+ " in " + indexers);
+ }
}
/**
@@ -99,22 +102,28 @@
if (indexer == null)
{
log.warn("No indexer could be found for the fqn " +
name.getParent());
- if (log.isDebugEnabled()) log.debug("The current content of the map
of indexers is " + indexers);
+ if (log.isDebugEnabled())
+ {
+ log.debug("The current content of the map of indexers is " +
indexers);
+ }
}
else if (wrapper.withChanges())
{
- indexer.updateIndex(wrapper.getChanges(), wrapper.getParentChanges());
+ indexer.updateIndex(wrapper.getChanges(), wrapper.getParentChanges());
}
else
{
- indexer.updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(),
wrapper.getParentAddedNodes(), wrapper
- .getParentRemovedNodes());
+ indexer.updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(),
wrapper.getParentAddedNodes(),
+ wrapper.getParentRemovedNodes());
}
}
finally
{
- // remove the data from the cache
- cache.removeNode(name);
+ if (modeHandler.getMode() == IndexerIoMode.READ_WRITE)
+ {
+ // remove the data from the cache
+ cache.removeNode(name);
+ }
}
}
return null;
@@ -196,7 +205,7 @@
private final QueryHandler handler;
private final QueryHandler parentHandler;
-
+
public Indexer(SearchManager searchManager, SearchManager parentSearchManager,
QueryHandler handler,
QueryHandler parentHandler) throws RepositoryConfigurationException
{
@@ -204,7 +213,8 @@
this.parentSearchManager = parentSearchManager;
this.handler = handler;
this.parentHandler = parentHandler;
- }
+ }
+
/**
* Flushes lists of added/removed nodes to SearchManagers, starting indexing.
*
@@ -264,8 +274,8 @@
}
}
}
- }
-
+ }
+
/**
* Flushes lists of added/removed nodes to SearchManagers, starting indexing.
*/
@@ -287,7 +297,8 @@
log.error("Error indexing changes " + e, e);
try
{
- handler.logErrorChanges(new HashSet<String>(changes.getRemove()),
new HashSet<String>(changes.getAddIds()));
+ handler.logErrorChanges(new HashSet<String>(changes.getRemove()),
new HashSet<String>(changes
+ .getAddIds()));
}
catch (IOException ioe)
{
@@ -296,7 +307,7 @@
}
}
// pass lists to parent search manager
- if (parentSearchManager != null && parentChanges!= null)
+ if (parentSearchManager != null && parentChanges != null)
{
try
{
@@ -311,7 +322,8 @@
log.error("Error indexing changes " + e, e);
try
{
- parentHandler.logErrorChanges(new
HashSet<String>(parentChanges.getRemove()), new
HashSet<String>(parentChanges.getAddIds()));
+ parentHandler.logErrorChanges(new
HashSet<String>(parentChanges.getRemove()), new HashSet<String>(
+ parentChanges.getAddIds()));
}
catch (IOException ioe)
{
@@ -319,6 +331,6 @@
}
}
}
- }
+ }
}
}
Show replies by date