Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-patch] Second try at indexer cycling patch

Bogdan Gheorghe <gheorghe@xxxxxxxxxx> said:

> 
> Hi Thomas - 
> 
> Just a quick note to let you know that I have been looking at this
> problem over the weekend and have a solution that will address parser
> exceptions and worse (I have some example code that eventually leads the
> parser to an OutOfMemory error). I'll have a patch out soon... 
> 
> - Bogdan 

Who 'da man! Bogdan in the fancy new commit pants 'da man!

Thanks,
 Thomas ... who in a more reserved tone thinks that would be great.


> "Thomas Fletcher" <thomasf@xxxxxxx> 
> Sent by: cdt-patch-admin@xxxxxxxxxxx 
> 
> 
> 02/09/2004 10:16 AM 
> 
> 
> Please respond to
> cdt-patch@xxxxxxxxxxx
> 
> 
> To
> <cdt-patch@xxxxxxxxxxx> 
> 
> cc
> 
> Subject
> [cdt-patch] Second try at indexer cycling patch
> 
> 	
> 
> 
> 
> 
> 
> 
> So, 
> 
>  Here is a second try at a simple fix for the complex problem of parser
> vs indexer (aka PR 51232).  Rather than put the exception handing in the
> parser, push it down one level to the SourceIndexer.  This is a
> temporary
> solution for the 1.2.x branch only since it will be more appropriately
> re-visited in the 2.0 timeframe.
> 
>  The patch just catches all exceptions and forwards those it knows about
> and silently acts as if the parser failed "normally" for those
> exceptions
> it is not aware of.
> 
> For the ChangeLog:
> 
> - Enhance the error recovery capabilities of the indexer in cases of
>  tumultuous parser failures.
> 
> --- PATCH START ---
> Index:
> index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
> ===================================================================
> RCS 
> file:
> /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/se
> arch/indexing/SourceIndexer.java,v
> retrieving revision 1.13
> diff -u -r1.13 SourceIndexer.java
> ---
> index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
>                 1 Oct 2003 22:15:34 -0000                 1.13
> +++
> index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
>                 9 Feb 2004 14:09:01 -0000
> @@ -88,7 +88,17 @@
>  
> 
>                 ParserFactory.createScanner( new StringReader( 
> document.getStringContent() ), resourceFile.getLocation().toOSString(), 
> scanInfo, ParserMode.COMPLETE_PARSE, language, requestor ), 
>  
> requestor, 
> ParserMode.COMPLETE_PARSE, language );
>                                   
> -                                  boolean retVal = parser.parse();
> +                                  //TF CHANGE: Do what we can to
> protect against stray parser 
> errors.  We let IOExceptions flow
> +                                  //through since they are handled
> explicitly by the API.  
> Other exceptions we treat as failures
> +                                  boolean retVal = false;
> +                                  try {
> +                                                   retVal =
> parser.parse();
> +                                  } catch(Exception ex) {
> +                                                   if(ex instanceof
> IOException) {
> +
> throw (IOException)ex;
> +                                                   }
> +                                                   /* Other parse
> errors are just "failures" */
> +                                  }
>                                   
>                                   if (!retVal)
>  
> org.eclipse.cdt.internal.core.model.Util.log
> (null, "Failed to index " + resourceFile.getFullPath(),
> ICLogConstants.CDT);
> 
> --- PATCH END ---
> Index:
> index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
> ===================================================================
> RCS file:
> /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/sea
> rch/indexing/SourceIndexer.java,v
> retrieving revision 1.13
> diff -u -r1.13 SourceIndexer.java
> ---
> index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
> 1 Oct 2003 22:15:34 -0000                 1.13
> +++
> index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java
> 9 Feb 2004 14:09:01 -0000
> @@ -88,7 +88,17 @@
>  
> ParserFactory.createScanner( new StringReader(
> document.getStringContent() ), resourceFile.getLocation().toOSString(),
> scanInfo, ParserMode.COMPLETE_PARSE, language, requestor ), 
>  
> requestor, ParserMode.COMPLETE_PARSE, language );
>                                   
> -                                  boolean retVal = parser.parse();
> +                                  //TF CHANGE: Do what we can to
> protect against stray parser errors.  We let IOExceptions flow
> +                                  //through since they are handled
> explicitly by the API.  Other exceptions we treat as failures
> +                                  boolean retVal = false;
> +                                  try {
> +                                                   retVal =
> parser.parse();
> +                                  } catch(Exception ex) {
> +                                                   if(ex instanceof
> IOException) {
> +
> throw (IOException)ex;
> +                                                   }
> +                                                   /* Other parse
> errors are just "failures" */
> +                                  }
>                                   
>                                   if (!retVal)
>  
> org.eclipse.cdt.internal.core.model.Util.log(null, "Failed to index " +
> resourceFile.getFullPath(), ICLogConstants.CDT);
> 
> 
> 



-- 





Back to the top