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

Misleading error leads to slave disconnecting from master

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Component/s: prqa-plugin
    • Labels:
      None
    • Environment:
      Jenkins 1.441, Windows 7, QAC-7.2F
    • Similar Issues:

      Description

      I'm having some issues running the PQRA Plugin. The documentation is a bit strange. To start with, the screenshot shows a report type "quality", even though it says that currently only compliance is available. Then it also says that a tool qaw must be installed, which I don't have anywhere in my installation files. In any case, here is the problem: the plugin seems to not find this qaw tool, and it produces an error that disconnects my slave agent from the master.

      Started by user XXXXX XXXXX, xxxxxx.xxxxx@xxx.xx
      Building remotely on Legoland
      Updating https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx
      At revision 1292
      Updating https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx
      At revision 1292
      Updating https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx
      At revision 1292
      no change for Updating https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx since the previous build
      no change for Updating https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx since the previous build
      no change for Updating https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx since the previous build
      This job will try to create a report with the following selected parameters:
      QAR selected project file: Sources/xxxx/QAC.prj
      QAR selected product: QAC
      QAR selected report type: Compliance

      Beginning report generation with the following command:
      qaw QAC "Sources/xxxx/QAC.prj" -maseq "qar %Q %P+ %L+ -po qar::report_type=Compliance\ Report -po qar::project_name=%J -po qar::output_path=c:_dev\jenkins-int\workspace\xxxxx\ QAC -po qar::viewing_program=dummy -po qar::report_format=xhtml"
      ERROR: Publisher net.praqma.jenkins.plugin.prqa.notifier.PRQANotifier aborted due to exception
      hudson.remoting.RequestAbortedException: hudson.remoting.RequestAbortedException: java.net.SocketException: Connection reset
      at hudson.remoting.Request.call(Request.java:149)
      at hudson.remoting.Channel.call(Channel.java:681)
      at hudson.FilePath.act(FilePath.java:772)
      at hudson.FilePath.act(FilePath.java:765)
      at net.praqma.jenkins.plugin.prqa.notifier.PRQANotifier.perform(PRQANotifier.java:203)
      at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:692)
      at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:667)
      at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:645)
      at hudson.model.Build$RunnerImpl.post2(Build.java:162)
      at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:614)
      at hudson.model.Run.run(Run.java:1429)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:238)
      Caused by: hudson.remoting.RequestAbortedException: java.net.SocketException: Connection reset
      at hudson.remoting.Request.abort(Request.java:273)
      at hudson.remoting.Channel.terminate(Channel.java:732)
      at hudson.remoting.Channel$ReaderThread.run(Channel.java:1139)
      Caused by: java.net.SocketException: Connection reset
      at java.net.SocketInputStream.read(SocketInputStream.java:168)
      at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
      at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
      at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2249)
      at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2542)
      at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
      at hudson.remoting.Channel$ReaderThread.run(Channel.java:1109)
      Notifying upstream projects of job completion
      Finished: FAILURE

      After this, my slave gets disconnected from the master. So my questions:

      • Where do I find this qaw tool? It is not installed with QAC-7.2F
      • Why does the absence of such tool end up in such a brutal way?
        Thanks

        Attachments

          Activity

          Hide
          lars_kruse Lars Kruse added a comment -

          Sorry for the very-late reply!

          First of all - that fact that you haven't installed the tool must not cause Jenkins to blow up. We are sorry for the inconvenience - we are preparing a new release, it will not only behave properly when the tools aren't install, but it will also be linux compliant as well.

          ... The plugin is a analysis and reporting tool for integration with QAC, QAC++, and later also QAVerify. These tools are provided by Programming Research (http://www.programmingresearch.com) and do static code analysis in appliance with the MISRA rules (among others), you'll need to purchase these tools first - to get the benefit of the plugin.

          Show
          lars_kruse Lars Kruse added a comment - Sorry for the very-late reply! First of all - that fact that you haven't installed the tool must not cause Jenkins to blow up. We are sorry for the inconvenience - we are preparing a new release, it will not only behave properly when the tools aren't install, but it will also be linux compliant as well. ... The plugin is a analysis and reporting tool for integration with QAC, QAC++, and later also QAVerify. These tools are provided by Programming Research ( http://www.programmingresearch.com ) and do static code analysis in appliance with the MISRA rules (among others), you'll need to purchase these tools first - to get the benefit of the plugin.
          Hide
          jrequejo Julian Requejo added a comment -

          thanks Lars for the reply. We do ni fact have purchased QAC, only that qaw was missing in the distribution given to me within our company. After contacting Programming Research, they were very helpful and kindly gave me access to those tools.

          Nevertheless, the error is triggered. I've done some more digging and this drastic problem seems to occur only when running on a master-slave configuration AND if the slave is running as a system service. If running as a user process, this does not happen. I suspect that this has something to do with the Flex LM service, because our Windriver compiler didn't work either when started via a system service, although it didn't crash our Jenkins.

          Now even after configuring our slave to run as a user process, another error was triggered after qaw. This error was only there if runnning on a master-slave configuration. If running on a single Jenkins server, the plugin worked. Have you guys tested it in a master-slave configuration?

          A third issue, is that the plugin doesn't seem to work at all with the newst Jenkins release (after 1.455 I think, when they slightly changed the GUI). You select the PQRA post-action from the pull down menu (something that in older versions is done via a ckeck box) and nothing happens.

          If you need further information I'm happy to file different bugs or give some logs. Let me know what you need.

          Show
          jrequejo Julian Requejo added a comment - thanks Lars for the reply. We do ni fact have purchased QAC, only that qaw was missing in the distribution given to me within our company. After contacting Programming Research, they were very helpful and kindly gave me access to those tools. Nevertheless, the error is triggered. I've done some more digging and this drastic problem seems to occur only when running on a master-slave configuration AND if the slave is running as a system service. If running as a user process, this does not happen. I suspect that this has something to do with the Flex LM service, because our Windriver compiler didn't work either when started via a system service, although it didn't crash our Jenkins. Now even after configuring our slave to run as a user process, another error was triggered after qaw. This error was only there if runnning on a master-slave configuration. If running on a single Jenkins server, the plugin worked. Have you guys tested it in a master-slave configuration? A third issue, is that the plugin doesn't seem to work at all with the newst Jenkins release (after 1.455 I think, when they slightly changed the GUI). You select the PQRA post-action from the pull down menu (something that in older versions is done via a ckeck box) and nothing happens. If you need further information I'm happy to file different bugs or give some logs. Let me know what you need.
          Hide
          lars_kruse Lars Kruse added a comment -

          Hi Julian

          The problem with the new GUI in Jenkins is apparently a problem for quite a lot of the plugins in the community right now - and we will also fix this issue in due time. Right now we are very concerned with not-crashing-the-slaves when something unforeseen happens (missing licenses, missing qaw ...and we have even seen this phenomena ourselves on linux when running jenkins as a service and the QAxxx environment variables aren't loaded from the .bash_profile).

          IN all these occasion the plugin should fail gracefully with an informative error message of what is wrong.

          What actually does seem to work is (as you are also hinting in your own description) when both Jenkins master and slave is running as user processes (e.g master is started using java -jar jenkins.war and the slaves are started using the .jnlp interface) everything works fine - also the nice informative error messages.

          However, we do realize, that we can not allow ourselves the luxury to anticipate that all Jenkins environments out there are run like this.
          We have created quite a few Plugins, but we must admit, that the PRQA one is the only one, so far, where we have seen such significant differences in behavior, dependent on how the jenkins instance is started.

          The licence issues are being scrutinized - they do give us grey hair.

          But I can assure you, that we're in red-alert and we are working on these issues as we speak.

          We expect to have a new release ready within very short.

          Show
          lars_kruse Lars Kruse added a comment - Hi Julian The problem with the new GUI in Jenkins is apparently a problem for quite a lot of the plugins in the community right now - and we will also fix this issue in due time. Right now we are very concerned with not-crashing-the-slaves when something unforeseen happens (missing licenses, missing qaw ...and we have even seen this phenomena ourselves on linux when running jenkins as a service and the QAxxx environment variables aren't loaded from the .bash_profile). IN all these occasion the plugin should fail gracefully with an informative error message of what is wrong. What actually does seem to work is (as you are also hinting in your own description) when both Jenkins master and slave is running as user processes (e.g master is started using java -jar jenkins.war and the slaves are started using the .jnlp interface) everything works fine - also the nice informative error messages. However, we do realize, that we can not allow ourselves the luxury to anticipate that all Jenkins environments out there are run like this. We have created quite a few Plugins, but we must admit, that the PRQA one is the only one, so far, where we have seen such significant differences in behavior, dependent on how the jenkins instance is started. The licence issues are being scrutinized - they do give us grey hair. But I can assure you, that we're in red-alert and we are working on these issues as we speak. We expect to have a new release ready within very short.
          Hide
          lars_kruse Lars Kruse added a comment -

          ...Oh. I forgot to respond to your offer to post us logs! We might need them later, but for now we are perfectly able to reproduce these issues on our lab environment - so for now we're OK. But I might want to get back to you later

          Show
          lars_kruse Lars Kruse added a comment - ...Oh. I forgot to respond to your offer to post us logs! We might need them later, but for now we are perfectly able to reproduce these issues on our lab environment - so for now we're OK. But I might want to get back to you later
          Hide
          jrequejo Julian Requejo added a comment -

          I can confirm that with version 1.0.2, the issue has been solved. Thanks very much for the quick response time

          Show
          jrequejo Julian Requejo added a comment - I can confirm that with version 1.0.2, the issue has been solved. Thanks very much for the quick response time

            People

            • Assignee:
              madsnielsen Mads Nielsen
              Reporter:
              jrequejo Julian Requejo
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: