knguyen 2004/08/31 17:29:19 CEST
Modified files: (Branch: JAHIA-4-0-BRANCH)
src/java/org/jahia/services/search JahiaSearchBaseService.java
Log:
- copy indexOrders to local vector before indexing for better concurrency.
Revision Changes Path
1.42.2.9 +57 -7
jahia/src/java/org/jahia/services/search/JahiaSearchBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/search/JahiaSearchBaseService.java.diff?r1=1.42.2.8&r2=1.42.2.9&f=h
Index: JahiaSearchBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/services/search/Attic/JahiaSearchBaseService.java,v
retrieving revision 1.42.2.8
retrieving revision 1.42.2.9
diff -u -r1.42.2.8 -r1.42.2.9
--- JahiaSearchBaseService.java 27 Aug 2004 16:05:06 -0000 1.42.2.8
+++ JahiaSearchBaseService.java 31 Aug 2004 15:29:19 -0000 1.42.2.9
@@ -768,15 +768,65 @@
*/
public void run () {
while (indexingThreadActivated) {
- indexQueue();
- synchronized (this) {
- try {
- wait (); // wait for next notify
- } catch (InterruptedException ie) {
+
+ Vector v = new Vector();
+ synchronized (indexOrders) {
+
+ for ( int i=0; i<indexOrders.size(); i++ ){
+ v.add(indexOrders.get(i));
+ }
+ indexOrders = new Vector();
+ }
+
+ long indexingStartTime = System.currentTimeMillis();
+ int indexOrderCount = v.size ();
+
+ while (v.size() > 0) {
+ JahiaIndexableDocument nextObject = null;
+
+ if (v.size() != 0) {
+ nextObject = (JahiaIndexableDocument)
+ v.elementAt(0);
+ v.remove(0);
+ }
+
+ // okay now we have the next added/removed field, we process it!
+ if (nextObject != null) {
+ if (nextObject.toBeAdded()) {
+ backgroundAddObjectToSearchEngine(nextObject);
+ }
+ else {
+ backgroundRemoveObjectFromSearchEngine(nextObject);
+ }
+ //this.indexOrdersCache.remove(nextObject.getKey());
+ }
+ }
+
+ long indexingElapsedTime = System.currentTimeMillis() -
indexingStartTime;
+ if (logger.isInfoEnabled()) {
+ logger.info(
+ "Finished processing " + indexOrderCount +
+ " indexing orders in " + indexingElapsedTime + "ms.");
+ }
+
+ // FIXME : oops, As we are in a separate thread, this would may have
sence
+ // to terminate Connection ?
+ org.jahia.services.database.ConnectionDispenser.
+ terminateConnection ();
+
+ int size = 0;
+ synchronized (indexOrders) {
+ size = indexOrders.size();
+ }
+ if ( size == 0 ){
+ synchronized(this){
+ try {
+ wait(); // wait for next notify
+ }
+ catch (InterruptedException ie) {
+ }
}
}
- logger.debug (
- "Search engine indexing in background, do not shutdown server
now !...");
}
}