Update of /var/cvs/contributions/lucene/src/org/mmbase/module/lucene
In directory james.mmbase.org:/tmp/cvs-serv19658/src/org/mmbase/module/lucene

Modified Files:
        Indexer.java Lucene.java Searcher.java 
Added Files:
        FullIndexEvents.java 
Log Message:
better report full index in admin pages


See also: 
http://cvs.mmbase.org/viewcvs/contributions/lucene/src/org/mmbase/module/lucene


FullIndexEvents.java is new



Index: Indexer.java
===================================================================
RCS file: 
/var/cvs/contributions/lucene/src/org/mmbase/module/lucene/Indexer.java,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- Indexer.java        1 Feb 2008 11:08:21 -0000       1.52
+++ Indexer.java        1 Feb 2008 12:40:42 -0000       1.53
@@ -34,7 +34,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: Indexer.java,v 1.52 2008/02/01 11:08:21 michiel Exp $
+ * @version $Id: Indexer.java,v 1.53 2008/02/01 12:40:42 michiel Exp $
  **/
 public class Indexer {
 
@@ -404,6 +404,7 @@
      */
     public void fullIndex() {
         log.service("Doing full index for " + toString());
+        EventManager.getInstance().propagateEvent(new 
FullIndexEvents.Event(getName(), FullIndexEvents.Status.START, 0));
         IndexWriter writer = null;
         try {
             Directory fullIndex = getDirectoryForFullIndex();
@@ -413,7 +414,7 @@
             int subIndexNumber = 0;
             for (IndexDefinition indexDefinition : queries) {
                 subIndexNumber++;
-                log.debug("full index for " + indexDefinition);
+                log.service("full index for " + indexDefinition);
                 CloseableIterator<? extends IndexEntry> j = 
indexDefinition.getCursor();
                 try {
                     index(j, writer, indexDefinition.getId());
@@ -429,6 +430,7 @@
             Directory.copy(fullIndex, getDirectory(), true);
             Date lastFullIndex = setLastFullIndex(startTime);
             log.info("Full index finished at " + lastFullIndex + ". Copied " + 
fullIndex + " to " + getDirectory() + " Total nr documents in index '" + 
getName() + "': " + writer.docCount());
+            EventManager.getInstance().propagateEvent(new 
FullIndexEvents.Event(getName(), FullIndexEvents.Status.IDLE, 
writer.docCount()));
         } catch (Exception e) {
             addError(e.getMessage());
             log.error("Cannot run FullIndex: " + e.getMessage(), e);
@@ -464,6 +466,7 @@
                 indexed++;
                 if (indexed % 100 == 0) {
                     log.service("Indexed " + indexed + " documents");
+                    EventManager.getInstance().propagateEvent(new 
FullIndexEvents.Event(getName(), FullIndexEvents.Status.BUSY, indexed));
                 } else if (log.isDebugEnabled()) {
                     log.debug("Indexed " + indexed + " documents");
                 }


Index: Lucene.java
===================================================================
RCS file: 
/var/cvs/contributions/lucene/src/org/mmbase/module/lucene/Lucene.java,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -b -r1.105 -r1.106
--- Lucene.java 1 Feb 2008 11:08:21 -0000       1.105
+++ Lucene.java 1 Feb 2008 12:40:42 -0000       1.106
@@ -48,7 +48,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: Lucene.java,v 1.105 2008/02/01 11:08:21 michiel Exp $
+ * @version $Id: Lucene.java,v 1.106 2008/02/01 12:40:42 michiel Exp $
  **/
 public class Lucene extends ReloadableModule implements NodeEventListener, 
RelationEventListener, IdEventListener {
 
@@ -493,6 +493,16 @@
     {
         addFunction(clearDirectory);
     }
+    protected Function/*<Integer>*/ fullIndexing = new 
AbstractFunction/*<Integer>*/("fullIndexing", new Parameter[] {INDEX, COPY}, 
ReturnType.BOOLEAN) {
+            public Integer  getFunctionValue(Parameters arguments) {
+                String index = (String) arguments.getString(INDEX);
+                Searcher searcher = getSearcher(index);
+                return searcher.getFullIndexSize();
+            }
+        };
+    {
+        addFunction(fullIndexing);
+    }
 
     //protected Function<Integer> unAssignFunction = new 
AbstractFunction<Integer>("unassign", new Parameter("id", Integer.class, true)) 
{
     protected Function/*<Integer>*/ unAssignFunction = new 
AbstractFunction/*<Integer>*/("unassign", new Parameter[] {new Parameter("id", 
Integer.class, true)}, ReturnType.INTEGER) {
@@ -1287,7 +1297,7 @@
             }
         }
         void fullIndex(final String index) {
-            if (status != BUSY_FULL_INDEX || ! 
assignment.equals(ALL_FULL_INDEX)) {
+            if (status != BUSY_FULL_INDEX || ! 
ALL_FULL_INDEX.equals(assignment)) {
                 if (! assigned(ALL_FULL_INDEX)) {
                     // only schedule a full index if no complete full index is 
currently busy or scheduled already.
                     Assignment a = new Assignment() {


Index: Searcher.java
===================================================================
RCS file: 
/var/cvs/contributions/lucene/src/org/mmbase/module/lucene/Searcher.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- Searcher.java       1 Feb 2008 11:08:21 -0000       1.44
+++ Searcher.java       1 Feb 2008 12:40:42 -0000       1.45
@@ -33,10 +33,10 @@
  * A wrapper around Lucene's [EMAIL PROTECTED] 
org.apache.lucene.search.IndexSearcher}. Every [EMAIL PROTECTED] Indexer} has 
its own Searcher.
  *
  * @author Pierre van Rooden
- * @version $Id: Searcher.java,v 1.44 2008/02/01 11:08:21 michiel Exp $
+ * @version $Id: Searcher.java,v 1.45 2008/02/01 12:40:42 michiel Exp $
  * @todo  Should the StopAnalyzers be replaced by index.analyzer? Something 
else?
  **/
-public class Searcher implements NewSearcher.Listener {
+public class Searcher implements NewSearcher.Listener, 
FullIndexEvents.Listener {
     private static final Logger log = 
Logging.getLoggerInstance(Searcher.class);
 
 
@@ -55,6 +55,9 @@
     private final Timer timer = new Timer();
     private int closingSearchers = 0;
 
+    private FullIndexEvents.Status status = FullIndexEvents.Status.IDLE;
+    private int intermediateSize = -1;
+
     /**
      * @param index The index where this Search is for
      */
@@ -71,6 +74,16 @@
             needsNewSearcher = true;
         }
     }
+    public void notify(FullIndexEvents.Event event) {
+        if (event.getIndex().equals(index.getName())) {
+            log.debug("Received " + event);
+            status = event.getStatus();
+            intermediateSize = event.getIndexed();
+        }
+    }
+    public int getFullIndexSize() {
+        return status != FullIndexEvents.Status.IDLE ? intermediateSize : -1;
+    }
 
     protected synchronized IndexSearcher getSearcher(boolean copy) throws 
IOException {
         if (copy) return  new IndexSearcher(index.getDirectoryForFullIndex() );
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to