Scarab commit: svn commit: r10378 - branches/release/b21/src/java/org/tigris/scarab: actions tools util/word xmlrpc

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: dabbous
Date: 2006-12-10 15:34:12-0800
New Revision: 10378

Modified:
   branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java
   branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java
   branches/release/b21/src/java/org/tigris/scarab/actions/Search.java
   branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
   branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java
   branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java

Log:
added some finally blocks to avoid potential blocking of
the search module. further changed the wait for search engines
from "infinite wait" to "wait or 20 seconds max" to avoid freezing of
Scarab.

Modified: branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java?view=diff&rev=10378&p1=branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java&p2=branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java&r1=10377&r2=10378
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/actions/ConfigureReport.java	2006-12-10 15:34:12-0800
@@ -85,6 +85,7 @@
 import org.tigris.scarab.util.ScarabUtil;
 import org.tigris.scarab.util.export.ExportFormat;
 import org.tigris.scarab.util.word.IssueSearch;
+import org.tigris.scarab.util.word.IssueSearchFactory;
 
 /**
  * This class is responsible for report generation forms
@@ -249,9 +250,12 @@
 
             // we are using an IssueSearch object to gather the data to
             // create the ReportOptionAttribute objects.
-
-            IssueSearch search = scarabR.getNewSearch();
-            // Set intake properties
+            IssueSearch search = null;
+            
+            try
+            {
+                search = scarabR.getNewSearch();
+                // Set intake properties
             //Group searchGroup = intake.get("SearchIssue", search.getQueryKey());
             //searchGroup.setProperties(search);
 
@@ -341,6 +345,20 @@
 
             String msg = getLocalizedHeadingConfirmMessage(report, l10n);
             scarabR.setConfirmMessage(msg);
+            
+            }
+            catch(Exception e)
+            {
+            	throw e;
+            }
+            finally
+            {
+            	if(search != null)
+            	{
+                    search.close();
+                    IssueSearchFactory.INSTANCE.notifyDone();
+            	}
+            }    
 
 /*
             //testing

Modified: branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java?view=diff&rev=10378&p1=branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java&p2=branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java&r1=10377&r2=10378
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/actions/ReportIssue.java	2006-12-10 15:34:12-0800
@@ -233,50 +233,47 @@
         boolean dupThresholdExceeded = false;
         try 
         {
-            search = IssueSearchFactory.INSTANCE.getInstance(
-                issue, (ScarabUser)data.getUser());
-        // remove special characters from the text attributes
-        for (Iterator textAVs = search.getTextAttributeValues().iterator();
-             textAVs.hasNext();)
-        {
-            AttributeValue av = (AttributeValue)textAVs.next();
-            if (av.getAttribute().getAttributeType().getName().equals("date"))
-                av.setValue(DateAttribute.internalDateFormat(av.getValue(), getLocalizationTool(context).get(L10NKeySet.ShortDatePattern)));
-            String s = av.getValue();
-            if (s != null && s.length() > 0) 
-            {
-                StringTokenizer tokens = new StringTokenizer(s, 
-                    ScarabConstants.INVALID_SEARCH_CHARACTERS);
-                StringBuffer query = new StringBuffer(s.length() + 10);
-                while (tokens.hasMoreTokens())
-                {
-                    query.append(' ');
-                    query.append(tokens.nextToken());
+            search = IssueSearchFactory.INSTANCE.getInstance(issue, (ScarabUser)data.getUser());
+            // remove special characters from the text attributes
+            for (Iterator textAVs = search.getTextAttributeValues().iterator(); textAVs.hasNext();)
+            {
+                AttributeValue av = (AttributeValue)textAVs.next();
+                if (av.getAttribute().getAttributeType().getName().equals("date"))
+                    av.setValue(DateAttribute.internalDateFormat(av.getValue(), getLocalizationTool(context).get(L10NKeySet.ShortDatePattern)));
+                String s = av.getValue();
+                if (s != null && s.length() > 0) 
+                {
+                    StringTokenizer tokens = new StringTokenizer(s, 
+                        ScarabConstants.INVALID_SEARCH_CHARACTERS);
+                    StringBuffer query = new StringBuffer(s.length() + 10);
+                    while (tokens.hasMoreTokens())
+                    {
+                        query.append(' ');
+                        query.append(tokens.nextToken());
+                    }
+                    av.setValue(query.toString().toLowerCase());       
                 }
-                av.setValue(query.toString().toLowerCase());       
             }
-        }
         
-        // set the template to dedupe unless none exist, then skip
-        // to final entry screen
-        IteratorWithSize queryResults = search.getQueryResults();
-        dupThresholdExceeded = (queryResults.size() > threshold);
-        if (dupThresholdExceeded)
-        {
-            List matchingIssueIds = new ArrayList(maxResults);
-            // limit the number of matching issues to maxResults
-            for (int i = 0; queryResults.hasNext() && i <= maxResults; i++) 
+            // set the template to dedupe unless none exist, then skip
+            // to final entry screen
+            IteratorWithSize queryResults = search.getQueryResults();
+            dupThresholdExceeded = (queryResults.size() > threshold);
+            if (dupThresholdExceeded)
+            {
+                List matchingIssueIds = new ArrayList(maxResults);
+                // limit the number of matching issues to maxResults
+                for (int i = 0; queryResults.hasNext() && i <= maxResults; i++) 
+                {
+                    matchingIssueIds.add(((QueryResult)queryResults.next()).getUniqueId());
+                }
+                context.put("issueList", matchingIssueIds);
+                template = "entry,Wizard2.vm";
+            }
+            else
             {
-                matchingIssueIds.add(
-                    ((QueryResult)queryResults.next()).getUniqueId());
+                template = nextTemplate;
             }
-            context.put("issueList", matchingIssueIds);
-            template = "entry,Wizard2.vm";
-        }
-        else
-        {
-            template = nextTemplate;
-        }
         }
         catch (MaxConcurrentSearchException e)
         {
@@ -293,8 +290,8 @@
             if (search != null) 
             {
                 search.close();
+                IssueSearchFactory.INSTANCE.notifyDone();
             }
-            IssueSearchFactory.INSTANCE.notifyDone();
         }
         
         setTarget(data, template);

Modified: branches/release/b21/src/java/org/tigris/scarab/actions/Search.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/actions/Search.java?view=diff&rev=10378&p1=branches/release/b21/src/java/org/tigris/scarab/actions/Search.java&p2=branches/release/b21/src/java/org/tigris/scarab/actions/Search.java&r1=10377&r2=10378
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/actions/Search.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/actions/Search.java	2006-12-10 15:34:12-0800
@@ -92,6 +92,7 @@
 import org.tigris.scarab.util.ScarabUtil;
 import org.tigris.scarab.util.export.ExportFormat;
 import org.tigris.scarab.util.word.IssueSearch;
+import org.tigris.scarab.util.word.IssueSearchFactory;
 
 /**
  *  This class is responsible for searching.
@@ -1012,7 +1013,9 @@
         IssueSearch search = scarabR.getPopulatedSearch();
         if (search != null)
         {
-            setTarget(data, "UserList.vm");            
+            setTarget(data, "UserList.vm");
+            search.close();
+            IssueSearchFactory.INSTANCE.notifyDone();       
         }
     } 
 

Modified: branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java?view=diff&rev=10378&p1=branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java&p2=branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java&r1=10377&r2=10378
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/tools/ScarabRequestTool.java	2006-12-10 15:34:12-0800
@@ -1986,6 +1986,14 @@
                 throw e; //EXCEPTION
             }
         }
+        finally
+        {
+        	if(search != null)
+        	{
+                search.close();
+                IssueSearchFactory.INSTANCE.notifyDone();
+        	}
+        }    
         return queryResults;
     }
 

Modified: branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java?view=diff&rev=10378&p1=branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java&p2=branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java&r1=10377&r2=10378
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/util/word/IssueSearchFactory.java	2006-12-10 15:34:12-0800
@@ -112,12 +112,12 @@
     int getMaxWait()
     {
         // TODO: FIXME: Should be avalon component.
-        //int max = Turbine.getConfiguration()
+        // int max = Turbine.getConfiguration()
         //    .getInt("scarab.concurrent.search.wait", -1);
-        int max = -1;
+        int max = 20; // if for any reason scarab search gets blocked we now get informed on the screen.
+                      // instead of getting a frozen scarab. [HD]
         max *= 1000;
-        return max;
-        
+        return max;         
     }
 
     public IssueSearch getInstance(Issue issue, ScarabUser searcher)
@@ -169,7 +169,7 @@
                         }
                         else if (maxWait < 0) 
                         {
-                            wait();
+                            wait(); // no god idea becasue potential for frozen Scarab [HD]
                         } 
                         else // maxWait == 0 
                         {

Modified: branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java?view=diff&rev=10378&p1=branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java&p2=branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java&r1=10377&r2=10378
==============================================================================
--- branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java	(original)
+++ branches/release/b21/src/java/org/tigris/scarab/xmlrpc/SimpleHandler.java	2006-12-10 15:34:12-0800
@@ -344,28 +344,33 @@
     protected Vector findIssuesWithAttributeValue(final ScarabUser user,
             final Attribute attribute, final String value) throws Exception
     {
-
+    	IssueSearch search = null;
         final Vector retValue = new Vector();
-        final IssueSearch search = IssueSearchFactory.INSTANCE.getInstance(
-                MITListManager.getAllModulesAllIssueTypesList(user), user);
-        final AttributeValue av = AttributeValue.getNewInstance(attribute,
-                search);
-        av.setValue(value);
-        search.addAttributeValue(av);
-        final Iterator queryresults = search.getQueryResults();
-
-        while (queryresults.hasNext())
+        try
         {
-            final QueryResult qr = (QueryResult) queryresults.next();
-            retValue.add(qr.getUniqueId());
-            //log(" Adding to results "+qr.getUniqueId());
-        }
+            search = IssueSearchFactory.INSTANCE.getInstance(
+                  MITListManager.getAllModulesAllIssueTypesList(user), user);
+            final AttributeValue av = AttributeValue.getNewInstance(attribute, search);
+            av.setValue(value);
+            search.addAttributeValue(av);
+            final Iterator queryresults = search.getQueryResults();
 
-        // close search
-        search.close();
-        IssueSearchFactory.INSTANCE.notifyDone();
-        // return matching issues
-        return retValue;
+            while (queryresults.hasNext())
+            {
+                final QueryResult qr = (QueryResult) queryresults.next();
+                retValue.add(qr.getUniqueId());
+                //log(" Adding to results "+qr.getUniqueId());
+            }
+        }
+        finally
+        {
+        	if(search != null)
+        	{
+                search.close();
+                IssueSearchFactory.INSTANCE.notifyDone();
+        	}
+        }    
+        return retValue; // return matching issues
     }
 
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.