Author: j16sdiz
Date: 2008-12-17 06:47:50 +0000 (Wed, 17 Dec 2008)
New Revision: 24417

Modified:
   trunk/plugins/XMLSpider/XMLSpider.java
Log:
Show "SCHEDULED" for index writer status

Modified: trunk/plugins/XMLSpider/XMLSpider.java
===================================================================
--- trunk/plugins/XMLSpider/XMLSpider.java      2008-12-17 06:33:25 UTC (rev 
24416)
+++ trunk/plugins/XMLSpider/XMLSpider.java      2008-12-17 06:47:50 UTC (rev 
24417)
@@ -43,7 +43,6 @@
 import com.db4o.ObjectContainer;
 import com.db4o.ObjectSet;
 import com.db4o.config.Configuration;
-import com.db4o.config.QueryEvaluationMode;
 import com.db4o.diagnostic.DiagnosticToConsole;
 import com.db4o.query.Query;
 
@@ -377,7 +376,7 @@
         */
        public void onSuccess(FetchResult result, ClientGetter state, Page 
page) {
                synchronized (this) {
-                       while (writingIndex && !stopped) {
+                       while ((writingIndex || writeIndexScheduled) && 
!stopped) {
                                try {
                                        wait();
                                } catch (InterruptedException e) {
@@ -1089,13 +1088,11 @@
 
                if (request.isPartSet("createIndex")) {
                        synchronized (this) {
-                               if (!writingIndex) {
-                                       scheduleMakeIndex();
+                               scheduleMakeIndex();
 
-                                       HTMLNode infobox = 
pageMaker.getInfobox("infobox infobox-success", "Scheduled Creating Index");
-                                       infobox.addChild("#", "Index will start 
create soon.");
-                                       contentNode.addChild(infobox);
-                               }
+                               HTMLNode infobox = 
pageMaker.getInfobox("infobox infobox-success", "Scheduled Creating Index");
+                               infobox.addChild("#", "Index will start create 
soon.");
+                               contentNode.addChild(infobox);
                        }
                }
 
@@ -1142,6 +1139,8 @@
                synchronized (this) {
                        if (writingIndex)
                                statusContent.addChild("span", "style", "color: 
red; font-weight: bold;", "RUNNING");
+                       else if (writeIndexScheduled)
+                               statusContent.addChild("span", "style", "color: 
blue; font-weight: bold;", "SCHEDULED");
                        else
                                statusContent.addChild("span", "style", "color: 
green; font-weight: bold;", "IDLE");
                }
@@ -1305,6 +1304,7 @@
 
        private boolean mustWriteIndex = false;
        private boolean writingIndex;
+       private boolean writeIndexScheduled;
 
        public void makeIndex() throws Exception {
                synchronized(this) {
@@ -1337,12 +1337,16 @@
                } finally {
                        synchronized (this) {
                                writingIndex = false;
+                               writeIndexScheduled = false;
                                notifyAll();
                        }
                }
        }
 
-       private void scheduleMakeIndex() {
+       private synchronized void scheduleMakeIndex() {
+               if (writeIndexScheduled || writingIndex)
+                       return;
+               
                core.getTicker().queueTimedJob(new PrioRunnable() {
                        public void run() {
                                try {
@@ -1355,8 +1359,8 @@
                        public int getPriority() {
                                return NativeThread.LOW_PRIORITY;
                        }
-
-               }, 1);
+               }, 60000); // wait 1 minute for cool down
+               writeIndexScheduled = true;
        }
 
        public void onFoundEdition(long l, USK key){

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to