Hi James,

you are right, this is another reason that parsing is slow. (See
JENKINS-10097, JENKINS-10596)

Currently, when the parser detects relative names it guesses absolute
paths. The current implementation is quite dumb and very slow for large
projects. A volunteer tried to implement a faster solution for this
problem, however that code still is not ready for a public release.

Ull


On 02/10/2012 04:11 PM, Nord, James wrote:
>
> Hi Ulli,
>
>  
>
> I tried to find the offending lines in order to get a sample – but in
> doing this I also went to look at the full detail of the error in the
> source file and was met with the following:
>
>  
>
> Copying the source file '[INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java'
> from the workspace to the build folder
> '/jenkinsdir/data/jobs/CMS/jobs/vcm/jobs/vcm-app/jobs/commit/builds/2012-02-08_15-04-06/workspace-files/1fb0ab88.tmp'
> on the Hudson master failed.
>
> Seems that the path is relative, however an absolute path is required
> when copying the sources.
>
> Is the file 'ClassificationMediaDataCreator.java' contained more than
> once in your workspace?
>
> Is the file '[INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java'
> a valid filename?
>
> If you are building on a slave: please check if the file is accessible
> under '$HUDSON_HOME/[job-name]/[INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java'
>
> If you are building on the master: please check if the file is
> accessible under '$HUDSON_HOME/[job-name]/workspace/[INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java'
>
> hudson.util.IOException2: remote file operation failed: [INFO]
> [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java
> at hudson.remoting.Channel@2f891745:cabci-cf-rh53-x64-10
>
>   at hudson.FilePath.act(FilePath.java:754)
>
> <snip>
>
> Caused by: java.io.FileNotFoundException: [INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java
> (No such file or directory)
>
>   at java.io.FileInputStream.open(Native Method)
>
>   at java.io.FileInputStream.<init>(FileInputStream.java:138)
>
> <snip>
>
>  
>
> I wonder if there are multiple reasons then why this is slow – trying
> to find files that don’t exist by recursively looking form them – and
> regexp parsing?
>
> As this was a release build the files will be contained twice in the
> workspace – once for the initial checkout and once for the subsequent
> release checkout.
>
>  
>
> What I see in the console for javadoc issues (maven2 build) is
>
>  
>
> [INFO] [INFO] Generating "JavaDocs" report.
>
> [INFO] [ERROR] Error fetching link:
> http://someserver/maven_sites/somepath/package-list. Ignored it.
>
> [INFO] Loading source files for package a.b.c...
>
> [INFO] Loading source files for package x.y.z...
>
> [INFO] Constructing Javadoc information...
>
> [INFO] Standard Doclet version 1.6.0_22
>
> [INFO] Building tree for all the packages and classes...
>
> [INFO] Generating /path/to/some/file.html...
>
> <above repeated for each file>
>
> [INFO] Building index for all the packages and classes...
>
> [INFO] Generating /path/to/some/file.html.
>
> <above repeated again >
>
> [INFO] Building index for all classes...
>
> [INFO] Generating /path/to/some/file.html.
>
> <above repeated again >
>
> [INFO] Note: Custom tags that could override future standard tags: 
> @todo. To avoid potential overrides, use at least one period character
> (.) in custom tag names.
>
> [INFO] Note: Custom tags that were not seen:  @todo
>
> [INFO] 3 warnings
>
> [INFO] [WARNING] Javadoc Warnings
>
> [INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ClassificationMediaDataCreator.java:65:
> warning - @return tag has no arguments.
>
> [INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/ProgramClassificationAssociationDataGatherer.java:101:
> warning - @param argument "em2" is not a parameter name.
>
> [INFO] [WARNING]
> /jenkinsdir/workspace/jobname/target/checkout/som/path/to/a/file/classification/PublishClassificationDataCreator.java:30:
> warning - @return tag has no arguments.
>
>  
>
>  
>
> Note the [WARNING] in this case is inside the [INFO] as the maven
> invocation performing javadoc is the release maven process.
>
>  
>
> So for this version of javadoc it looks like*“.**\w\.java: warning –“
> – so again I would think that “warning” could be used the same as
> javadoc (although 1.7 and pre 1.6 vms may be different and it may be
> different still if you don’t use maven?)
>
>  
>
> The large log was actually a mistake on my part – as I forgot to add
> “-Dmaven.test.redirectTestOutputToFile=true” and the tests run with
> debug log enabled J
>
> So I can fix my immediate issue by sorting out my own mess – but I
> thought there may be some other issue lurking in the background.
>
>  
>
> /James
>
>  
>
> *From:*jenkinsci-users@googlegroups.com
> [mailto:jenkinsci-users@googlegroups.com] *On Behalf Of *Ullrich Hafner
> *Sent:* 10 February 2012 13:04
> *To:* jenkinsci-users@googlegroups.com
> *Subject:* Re: warnings plugin
>
>  
>
> The parsing depends on the size of the file to read. Each line is
> matched with a regular expression. The complexity of these expressions
> is quite different for different parsers.
>
> The Java parser has an optimization step: it using a string matcher
> for each line that detects the existence of the word "warning". Only
> lines containing that text will be matched with the regular expression
> afterwards. I don't remember the syntax of JavaDoc warnings, is there
> a similar string that can be used?
>
> And 750MB is a really large log file :-) As a workaround you can try
> to write the output of the javadoc processing to a different file.
>
> Ulli
>
>
>
> On 02/09/2012 05:32 PM, Nord, James wrote:
>
> Hi,
>
>  
>
> We have the warnings plugin enabled – which looks for javac and
> javadoc warnings in the maven2 type build.
>
>  
>
> All is fine until I ran a release.  The warnings plugin took about 9.5
> hours (yes nine and a half) to parse the console to find the javadoc
> warnings!?
>
> A build of deploy site-deploy with the same configuration takes a few
> minutes.
>
>  
>
> The main difference is the maven jobs use
> -Dmaven.test.redirectTestOutputToFile=true (and as such the console
> was large ~700MB)
>
> However the javac error parsing completed in a few minutes…
>
>  
>
> (<consoleLogParsers>
>
> <string>Java Compiler</string>
>
> <string>JavaDoc</string>
>
> </consoleLogParsers>
>
> )
>
>  
>
> The parser found 161 javadoc warnings – so not that many :-P
>
>  
>
> Stack trace from the job is as follows
>
> "Executor #0 for xxxxxxxx: executing yyyycommit #5" Id=63 Group=main RUNNABLE
>
>         at java.util.regex.Pattern$CharProperty.match(Pattern.java:3694)
>
>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4158)
>
>         at java.util.regex.Pattern$Curly.match(Pattern.java:4132)
>
>         at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
>
>         at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
>
>         at java.util.regex.Pattern$Branch.match(Pattern.java:4502)
>
>         at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
>
>         at java.util.regex.Pattern$Branch.match(Pattern.java:4500)
>
>         at java.util.regex.Pattern$Start.match(Pattern.java:3408)
>
>         at java.util.regex.Matcher.search(Matcher.java:1198)
>
>         at java.util.regex.Matcher.find(Matcher.java:591)
>
>         at
> hudson.plugins.warnings.parser.RegexpParser.findAnnotations(RegexpParser.java:81)
>
>         at
> hudson.plugins.warnings.parser.RegexpLineParser.parse(RegexpLineParser.java:82)
>
>         at
> hudson.plugins.warnings.parser.ParserRegistry.parse(ParserRegistry.java:273)
>
>         at
> hudson.plugins.warnings.WarningsPublisher.parseConsoleLog(WarningsPublisher.java:278)
>
>         at
> hudson.plugins.warnings.WarningsPublisher.perform(WarningsPublisher.java:244)
>
>         at
> hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:338)
>
>         at
> hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27)
>
>         at
> hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:682)
>
>         at
> hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:657)
>
>         at
> hudson.maven.MavenModuleSetBuild$RunnerImpl.post2(MavenModuleSetBuild.java:942)
>
>         at
> hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:604)
>
>         at hudson.model.Run.run(Run.java:1400)
>
>         at
> hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:476)
>
>         at
> hudson.model.ResourceController.execute(ResourceController.java:88)
>
>         at hudson.model.Executor.run(Executor.java:175)
>
>  
>
>  
>
> Is there something massively different between how javadoc and javac
> warnings are tracked – I’m unclear why it took so long.
>
>  
>
> Monitoring showed there was plenty of heap available and although this
> is on a vm – it pretty much had one core of a X5690 dedicated to this
> parsing (Jenkins itself has 2 vcpus – and the whole system was mostly
> idle.)
>
>  
>
> Jenkins 1.424.2 with 3.26 of the warnings plugin.
>
>  
>
> /James
>
>  
>
> ------------------------------------------------------------------------
>
>
> **************************************************************************************
> This message is confidential and intended only for the addressee. If
> you have received this message in error, please immediately notify the
> postmas...@nds.com <mailto:postmas...@nds.com> and delete it from your
> system as well as any copies. The content of e-mails as well as
> traffic data may be monitored by NDS for employment and security
> purposes. To protect the environment please do not print this e-mail
> unless necessary.
>
> NDS Limited. Registered Office: One London Road, Staines, Middlesex,
> TW18 4EX, United Kingdom. A company registered in England and Wales.
> Registered no. 3080780. VAT no. GB 603 8808 40-00
> **************************************************************************************
>
>  
>

Reply via email to