Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60033

Wrong path picked up by SphinxBuildParser

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Component/s: analysis-model
    • Environment:
      Jenkins 2.202
      OpenJDK Runtime Environment 1.8.0_222-b10
      Analysis Model API 7.0.1
      Forensics API 0.5.0
      Git Forensics 0.5.0
      Warnings Next Generation 7.1.0
    • Similar Issues:
    • Released As:
      analysis-model 7.0.2

      Description

      Hi,

      when I updated the above mentioned plugins last week to the latest versions, I noticed that a lot of my jobs were starting to fail with the following stack trace and exception:

      Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from server.domain.com/10.XX.XX.XX:52482
      at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
      at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
      at hudson.remoting.Channel.call(Channel.java:955)
      at hudson.FilePath.act(FilePath.java:1069)
      at hudson.FilePath.act(FilePath.java:1058)
      at io.jenkins.plugins.analysis.core.steps.IssuesScanner.postProcess(IssuesScanner.java:126)
      at io.jenkins.plugins.analysis.core.steps.IssuesScanner.scan(IssuesScanner.java:110)
      at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.scanWithTool(IssuesRecorder.java:629)
      at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.record(IssuesRecorder.java:593)
      at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.perform(IssuesRecorder.java:563)
      at io.jenkins.plugins.analysis.core.steps.RecordIssuesStep$Execution.run(RecordIssuesStep.java:973)
      at io.jenkins.plugins.analysis.core.steps.RecordIssuesStep$Execution.run(RecordIssuesStep.java:936)
      at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at java.lang.Thread.run(Thread.java:748)
      java.nio.file.InvalidPathException: Illegal char <:> at index 73: c:/jenkins/workspace/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xx/xxxxxxxx/xxxxxx.py:docstring of xx.xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx
      at sun.nio.fs.WindowsPathParser.normalize(Unknown Source)
      at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
      at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
      at sun.nio.fs.WindowsPath.parse(Unknown Source)
      at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
      at java.nio.file.Paths.get(Unknown Source)
      at io.jenkins.plugins.analysis.core.util.AbsolutePathGenerator.resolveAbsolutePath(AbsolutePathGenerator.java:118)
      at io.jenkins.plugins.analysis.core.util.AbsolutePathGenerator.resolveAbsoluteNames(AbsolutePathGenerator.java:94)
      at io.jenkins.plugins.analysis.core.util.AbsolutePathGenerator.run(AbsolutePathGenerator.java:74)
      at io.jenkins.plugins.analysis.core.steps.IssuesScanner$ReportPostProcessor.resolveAbsolutePaths(IssuesScanner.java:321)
      at io.jenkins.plugins.analysis.core.steps.IssuesScanner$ReportPostProcessor.invoke(IssuesScanner.java:274)
      at io.jenkins.plugins.analysis.core.steps.IssuesScanner$ReportPostProcessor.invoke(IssuesScanner.java:246)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3069)
      at hudson.remoting.UserRequest.perform(UserRequest.java:212)
      at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      at hudson.remoting.Request$2.run(Request.java:369)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
      at java.lang.Thread.run(Unknown Source)
      Finished: FAILURE

       

      I have seen similar issues from a few years ago, so I think this is a regression. I am not sure what the correct affected component is, but downgrading the plugins above to the following versions solved the issue:

      Analysis Model API 6.0.3
      Forensics API 0.4.1
      Git Forensics 0.3.2
      Warnings Next Generation 6.1.1

       

        Attachments

          Issue Links

            Activity

            Hide
            drulli Ulli Hafner added a comment -

            Seems that the root cause is a broken path. Which parser are you using? Can you please add a sample log message that produces the broken file name?

            Show
            drulli Ulli Hafner added a comment - Seems that the root cause is a broken path. Which parser are you using? Can you please add a sample log message that produces the broken file name?
            Hide
            jenul Wolfgang Ulmer added a comment -

            Hi Ulli Hafner, thanks for the super fast response! BTW: I really love the new warnings plugin and the aggregated result display.

            I am using the following pipeline command to parse the output from sphinx-build:

            recordIssues aggregatingResults: true, enabledForFailure: true, referenceJobName: "${Utils.getProjectJobName(env.JOB_NAME)}/master", tools: [sphinxBuild(pattern: "${doc_folder}/sphinx-build.log", reportEncoding: 'UTF-8')]
            

            Below is the full log file sphinx-build.log (with minor removals). Is it a problem that normal stdout output mingles with the stderr output?

            Running Sphinx v2.1.2
            making output directory... done
            building [mo]: targets for 0 po files that are out of date
            building [html]: targets for 9 source files that are out of date
            updating environment: 142 added, 0 changed, 0 removed
            reading sources... [100%] user_guide                                           
            looking for now-outdated files... none found
            pickling environment... done
            checking consistency... done
            preparing documents... done
            writing output... [100%] user_guide                                            
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.fooBase.foo_bar_baz:22: WARNING: py:mod reference target not found: bar.foo.postprocessing
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.fooBase.foo_bar_baz_boo:26: WARNING: py:mod reference target not found: bar.foo.postprocessing
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_bar_baz:22: WARNING: py:mod reference target not found: bar.foo.postprocessing
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_bar_baz_boo:26: WARNING: py:mod reference target not found: bar.foo.postprocessing
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_boo:4: WARNING: py:meth reference target not found: _recompute_if_necessary(output)
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_boo:: WARNING: py:class reference target not found: array
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.get_foo:: WARNING: py:class reference target not found: array-like
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.map_foo_to_bar:: WARNING: py:class reference target not found: array
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.map_foo_to_bar:: WARNING: py:class reference target not found: 1d
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.map_foo_to_bar:: WARNING: py:class reference target not found: 2d
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyOtherFoo.foo_bar_baz:22: WARNING: py:mod reference target not found: bar.foo.postprocessing
            C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyOtherFoo.foo_bar_baz_boo:26: WARNING: py:mod reference target not found: bar.foo.postprocessing
            C:\path\to\prj\foo\footivity.py:docstring of bar.foo.footivityMap:12: WARNING: py:class reference target not found: bar.foo.footivity.footivityBase
            C:\path\to\prj\beta\bob.py:docstring of bar.beta.MyRegression.load:4: WARNING: py:class reference target not found: bar.beta.bob.MyRegression
            C:\path\to\prj\beta\bob.py:docstring of bar.beta.MyRegression.save:3: WARNING: py:meth reference target not found: MyRegression.load(filename)
            C:\path\to\prj\boo\factory.py:docstring of bar.boo.FooFactory.get:6: WARNING: py:class reference target not found: bar.boo.boo.boo
            C:\path\to\prj\boo\factory.py:docstring of bar.boo.BarFactory.get:6: WARNING: py:class reference target not found: bar.boo.boo.boo
            C:\path\to\prj\boo\__init__.py:docstring of bar.boo.access:46: WARNING: py:class reference target not found: bar.boo.boo.boo
            generating indices... genindex py-modindex
            highlighting module code... [100%]
            writing additional pages... search
            copying images... [100%] _static/foo.png
            copying static files... done
            copying extra files... done
            dumping search index in English (code: en) ... done
            dumping object inventory... done
            build succeeded, 18 warnings.
            
            The HTML pages are in _build\html.
            
            Show
            jenul Wolfgang Ulmer added a comment - Hi Ulli Hafner , thanks for the super fast response! BTW: I really love the new warnings plugin and the aggregated result display. I am using the following pipeline command to parse the output from sphinx-build: recordIssues aggregatingResults: true , enabledForFailure: true , referenceJobName: "${Utils.getProjectJobName(env.JOB_NAME)}/master" , tools: [sphinxBuild(pattern: "${doc_folder}/sphinx-build.log" , reportEncoding: 'UTF-8' )] Below is the full log file  sphinx-build.log (with minor removals). Is it a problem that normal stdout output mingles with the stderr output? Running Sphinx v2.1.2 making output directory... done building [mo]: targets for 0 po files that are out of date building [html]: targets for 9 source files that are out of date updating environment: 142 added, 0 changed, 0 removed reading sources... [100%] user_guide looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done writing output... [100%] user_guide C:\path\to\prj\foo\legacy.py:docstring of bar.foo.fooBase.foo_bar_baz:22: WARNING: py:mod reference target not found: bar.foo.postprocessing C:\path\to\prj\foo\legacy.py:docstring of bar.foo.fooBase.foo_bar_baz_boo:26: WARNING: py:mod reference target not found: bar.foo.postprocessing C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_bar_baz:22: WARNING: py:mod reference target not found: bar.foo.postprocessing C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_bar_baz_boo:26: WARNING: py:mod reference target not found: bar.foo.postprocessing C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_boo:4: WARNING: py:meth reference target not found: _recompute_if_necessary(output) C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.foo_boo:: WARNING: py: class reference target not found: array C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.get_foo:: WARNING: py: class reference target not found: array-like C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.map_foo_to_bar:: WARNING: py: class reference target not found: array C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.map_foo_to_bar:: WARNING: py: class reference target not found: 1d C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyFooBar.map_foo_to_bar:: WARNING: py: class reference target not found: 2d C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyOtherFoo.foo_bar_baz:22: WARNING: py:mod reference target not found: bar.foo.postprocessing C:\path\to\prj\foo\legacy.py:docstring of bar.foo.MyOtherFoo.foo_bar_baz_boo:26: WARNING: py:mod reference target not found: bar.foo.postprocessing C:\path\to\prj\foo\footivity.py:docstring of bar.foo.footivityMap:12: WARNING: py: class reference target not found: bar.foo.footivity.footivityBase C:\path\to\prj\beta\bob.py:docstring of bar.beta.MyRegression.load:4: WARNING: py: class reference target not found: bar.beta.bob.MyRegression C:\path\to\prj\beta\bob.py:docstring of bar.beta.MyRegression.save:3: WARNING: py:meth reference target not found: MyRegression.load(filename) C:\path\to\prj\boo\factory.py:docstring of bar.boo.FooFactory.get:6: WARNING: py: class reference target not found: bar.boo.boo.boo C:\path\to\prj\boo\factory.py:docstring of bar.boo.BarFactory.get:6: WARNING: py: class reference target not found: bar.boo.boo.boo C:\path\to\prj\boo\__init__.py:docstring of bar.boo.access:46: WARNING: py: class reference target not found: bar.boo.boo.boo generating indices... genindex py-modindex highlighting module code... [100%] writing additional pages... search copying images... [100%] _static/foo.png copying static files... done copying extra files... done dumping search index in English (code: en) ... done dumping object inventory... done build succeeded, 18 warnings. The HTML pages are in _build\html.
            Hide
            drulli Ulli Hafner added a comment -

            I created a test that exposes a bug: https://github.com/jenkinsci/analysis-model/pull/248.

            Seems that the message "docstring of bar.foo.fooBase.foo_bar_baz" is interpreted as part of the file name. Interested in providing a PR for the parser?

            The java.nio.file.InvalidPathException has been fixed now, release is in progress...

            Show
            drulli Ulli Hafner added a comment - I created a test that exposes a bug: https://github.com/jenkinsci/analysis-model/pull/248 . Seems that the message "docstring of bar.foo.fooBase.foo_bar_baz" is interpreted as part of the file name. Interested in providing a PR for the parser ? The java.nio.file.InvalidPathException has been fixed now, release is in progress...
            Hide
            jenul Wolfgang Ulmer added a comment -

            Thanks for that quick fix... unfortunately, I am currently mainly using a Windows corporate PC so doing the development setup would have been more work than fixing the regex... but thanks for the heads-up.

            Show
            jenul Wolfgang Ulmer added a comment - Thanks for that quick fix... unfortunately, I am currently mainly using a Windows corporate PC so doing the development setup would have been more work than fixing the regex... but thanks for the heads-up.

              People

              • Assignee:
                laebi Lorenz Aebi
                Reporter:
                jenul Wolfgang Ulmer
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: