[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