[exo-jcr-commits] exo-jcr SVN: r988 - in jcr/branches/1.12.0-JBC/component/core/src: main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Dec 10 10:26:21 EST 2009
Author: nzamosenchuk
Date: 2009-12-10 10:26:20 -0500 (Thu, 10 Dec 2009)
New Revision: 988
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/QueryHandler.java
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/lucene/MultiIndex.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/SlowQueryHandler.java
Log:
EXOJCR-291: READ_ONLY set by default and Multiindex is now launches recover only if READ_WRITE. Default filter sets RW on creation.
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java 2009-12-10 14:59:45 UTC (rev 987)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java 2009-12-10 15:26:20 UTC (rev 988)
@@ -49,6 +49,8 @@
QueryHandler parentHandler)
{
super(searchManager, parentSearchManager, config, indexingTree, parentIndexingTree, handler, parentHandler);
+ handler.setIndexerIoMode(IndexerIoMode.READ_WRITE);
+ parentHandler.setIndexerIoMode(IndexerIoMode.READ_WRITE);
}
/**
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/QueryHandler.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/QueryHandler.java 2009-12-10 14:59:45 UTC (rev 987)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/QueryHandler.java 2009-12-10 15:26:20 UTC (rev 988)
@@ -110,7 +110,7 @@
*/
void logErrorChanges(Set<String> removed, Set<String> added) throws IOException;
- void setIndexerIoMode(IndexerIoMode ioMode) throws IOException, RepositoryException;
+ void setIndexerIoMode(IndexerIoMode ioMode);
/**
* @return the name of the query class to use.
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-10 14:59:45 UTC (rev 987)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/IndexerCacheLoader.java 2009-12-10 15:26:20 UTC (rev 988)
@@ -49,6 +49,15 @@
private QueryHandler parentHandler;
+ /**
+ * Inject dependencies needed for CacheLoader: SearchManagers and QueryHandlers.
+ *
+ * @param searchManager
+ * @param parentSearchManager
+ * @param handler
+ * @param parentHandler
+ * @throws RepositoryConfigurationException
+ */
public void init(SearchManager searchManager, SearchManager parentSearchManager, QueryHandler handler,
QueryHandler parentHandler) throws RepositoryConfigurationException
{
@@ -71,7 +80,6 @@
log.info("Received list wrapper, start indexing...");
}
ChangesFilterListsWrapper wrapper = (ChangesFilterListsWrapper)val;
- log.info("Loader=" + this + " changes=" + wrapper.dump());
updateIndex(wrapper.getAddedNodes(), wrapper.getRemovedNodes(), wrapper.getParentAddedNodes(), wrapper
.getParentRemovedNodes());
}
@@ -89,6 +97,7 @@
protected void updateIndex(Set<String> addedNodes, Set<String> removedNodes, Set<String> parentAddedNodes,
Set<String> parentRemovedNodes)
{
+ // pass lists to search manager
if (searchManager != null && (addedNodes.size() > 0 || removedNodes.size() > 0))
{
try
@@ -112,6 +121,7 @@
}
}
}
+ // pass lists to parent search manager
if (parentSearchManager != null && (parentAddedNodes.size() > 0 || parentRemovedNodes.size() > 0))
{
try
@@ -138,42 +148,19 @@
}
/**
- * Switches Indexer mode from RO to RW, or
+ * Switches Indexer mode from RO to RW, or from RW to RO
*
* @param ioMode
*/
public void setMode(IndexerIoMode ioMode)
{
- log.info("Setting indexer mode to: "+ioMode);
if (handler != null)
{
- try
- {
- handler.setIndexerIoMode(ioMode);
- }
- catch (IOException e)
- {
- log.error(e);
- }
- catch (RepositoryException e)
- {
- log.error(e);
- }
+ handler.setIndexerIoMode(ioMode);
}
if (parentHandler != null)
{
- try
- {
- parentHandler.setIndexerIoMode(ioMode);
- }
- catch (IOException e)
- {
- log.error(e);
- }
- catch (RepositoryException e)
- {
- log.error(e);
- }
+ parentHandler.setIndexerIoMode(ioMode);
}
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2009-12-10 14:59:45 UTC (rev 987)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2009-12-10 15:26:20 UTC (rev 988)
@@ -171,7 +171,7 @@
* Task that is periodically called by {@link #FLUSH_TIMER} and checks if
* index should be flushed.
*/
- private final TimerTask flushTask;
+ private TimerTask flushTask;
/**
* The RedoLog of this <code>MultiIndex</code>.
@@ -211,7 +211,7 @@
/**
* Indexer io mode
*/
- private IndexerIoMode ioMode = IndexerIoMode.READ_WRITE;
+ private IndexerIoMode ioMode;
/**
* Creates a new MultiIndex.
@@ -224,8 +224,9 @@
* @throws IOException
* if an error occurs
*/
- MultiIndex(SearchIndex handler, IndexingTree indexingTree) throws IOException
+ MultiIndex(SearchIndex handler, IndexingTree indexingTree, IndexerIoMode ioMode) throws IOException
{
+ this.ioMode = ioMode;
this.directoryManager = handler.getDirectoryManager();
this.indexDir = directoryManager.getDirectory(".");
this.handler = handler;
@@ -233,7 +234,7 @@
this.redoLog = new RedoLog(indexDir);
this.indexingTree = indexingTree;
this.nsMappings = handler.getNamespaceMappings();
-
+ this.flushTask = null;
if (indexNames.exists(indexDir))
{
indexNames.read(indexDir);
@@ -294,47 +295,44 @@
indexingQueue.initialize(this);
- redoLogApplied = redoLog.hasEntries();
+ if (ioMode == IndexerIoMode.READ_WRITE)
+ {
+ redoLogApplied = redoLog.hasEntries();
- // run recovery
- Recovery.run(this, redoLog);
+ // run recovery
+ Recovery.run(this, redoLog);
- // enqueue unused segments for deletion
- enqueueUnusedSegments();
- attemptDelete();
+ // enqueue unused segments for deletion
+ enqueueUnusedSegments();
+ attemptDelete();
- // now that we are ready, start index merger
- merger.start();
+ // now that we are ready, start index merger
+ merger.start();
- if (redoLogApplied)
- {
- // wait for the index merge to finish pending jobs
- try
+ if (redoLogApplied)
{
- merger.waitUntilIdle();
+ // wait for the index merge to finish pending jobs
+ try
+ {
+ merger.waitUntilIdle();
+ }
+ catch (InterruptedException e)
+ {
+ // move on
+ }
+ flush();
}
- catch (InterruptedException e)
+
+ if (indexNames.size() > 0)
{
- // move on
+ scheduleFlushTask();
}
- flush();
}
-
- flushTask = new TimerTask()
+ else
{
- public void run()
- {
- // check if there are any indexing jobs finished
- checkIndexingQueue();
- // check if volatile index should be flushed
- checkFlush();
- }
- };
+ redoLogApplied = false;
+ }
- if (indexNames.size() > 0)
- {
- scheduleFlushTask();
- }
}
/**
@@ -900,7 +898,10 @@
synchronized (this)
{
// stop timer
- flushTask.cancel();
+ if (flushTask != null)
+ {
+ flushTask.cancel();
+ }
// commit / close indexes
try
@@ -1132,6 +1133,20 @@
private void scheduleFlushTask()
{
lastFlushTime = System.currentTimeMillis();
+ if (flushTask != null)
+ {
+ flushTask.cancel();
+ }
+ flushTask = new TimerTask()
+ {
+ public void run()
+ {
+ // check if there are any indexing jobs finished
+ checkIndexingQueue();
+ // check if volatile index should be flushed
+ checkFlush();
+ }
+ };
FLUSH_TIMER.schedule(flushTask, 0, 1000);
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2009-12-10 14:59:45 UTC (rev 987)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2009-12-10 15:26:20 UTC (rev 988)
@@ -418,7 +418,7 @@
/**
* Indexer io mode
*/
- private IndexerIoMode ioMode = IndexerIoMode.READ_WRITE;
+ private IndexerIoMode ioMode = IndexerIoMode.READ_ONLY;
/**
* Working constructor.
@@ -520,7 +520,7 @@
indexingConfig = createIndexingConfiguration(nsMappings);
analyzer.setIndexingConfig(indexingConfig);
- index = new MultiIndex(this, context.getIndexingTree());
+ index = new MultiIndex(this, context.getIndexingTree(), ioMode);
if (index.numDocs() == 0 && context.isCreateInitialIndex())
{
@@ -2648,7 +2648,7 @@
/**
* @see org.exoplatform.services.jcr.impl.core.query.QueryHandler#setIndexerIoMode(org.exoplatform.services.jcr.impl.core.query.IndexerIoMode)
*/
- public void setIndexerIoMode(IndexerIoMode ioMode) throws IOException, RepositoryException
+ public void setIndexerIoMode(IndexerIoMode ioMode)
{
log.info("Indexer io mode=" + ioMode);
//do some thing if changed
Modified: jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/SlowQueryHandler.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/SlowQueryHandler.java 2009-12-10 14:59:45 UTC (rev 987)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/SlowQueryHandler.java 2009-12-10 15:26:20 UTC (rev 988)
@@ -99,7 +99,7 @@
/**
* @see org.exoplatform.services.jcr.impl.core.query.QueryHandler#setIndexerIoMode(org.exoplatform.services.jcr.impl.core.query.IndexerIoMode)
*/
- public void setIndexerIoMode(IndexerIoMode ioMode) throws IOException, RepositoryException
+ public void setIndexerIoMode(IndexerIoMode ioMode)
{
this.ioMode = ioMode;
More information about the exo-jcr-commits
mailing list