• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • analysis-model
    • 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
    • analysis-model 7.0.2

      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

       

          [JENKINS-60033] Wrong path picked up by SphinxBuildParser

          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?

          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?

          Hi drulli, 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.
          

          Wolfgang Ulmer added a comment - Hi drulli , 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.

          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...

          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...

          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.

          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.

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

              Created:
              Updated:
              Resolved: