• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • monitoring-plugin
    • None
    • Jenkins v1.467
      CentOS 5.3 master, 16GB RAM, 8 cores
      2 CentOS 5.3 slaves
      2 Mac Mini slaves

      After installing the Monitoring plugin (choosing the "Install without Restart" button), then navigating to http://jenkins/monitoring/, the response I get is binary gibberish. The page is served with "Content-type: text/html", but what it is outputting is clearly not HTML. The same also happens at http://jenkins/monitoring/nodes/

      Here is a sample request to /monitoring:

      GET /monitoring HTTP/1.1
      Host: jenkins.company.com
      Connection: keep-alive
      Cache-Control: max-age=0
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      Accept-Encoding: gzip,deflate,sdch
      Accept-Language: en-US,en;q=0.8
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
      Cookie: JSESSIONID.xx=xx; screenResolution=2560x1440
      
      HTTP/1.1 200 OK
      Transfer-Encoding: chunked
      Server: Winstone Servlet Engine v0.9.10
      Cache-Control: no-cache
      Pragma: no-cache
      Expires: -1
      Content-Type: text/html;charset=UTF-8
      Content-Encoding: gzip
      Vary: Accept-Encoding
      Date: Thu, 07 Jun 2012 17:13:45 GMT
      X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
      
      ...
      

      Based on the response headers, I see "Content-encoding: gzip", which leads me to believe that it is compressing the output, but my browser is not decoding the response. The same problem occurs in both Chrome 19.0, and Firefox 13.0.

          [JENKINS-14050] Unreadable HTML response

          Joe Hansche added a comment -

          Screenshot of the response, since JIRA is not able to accept the binary characters in a description

          Joe Hansche added a comment - Screenshot of the response, since JIRA is not able to accept the binary characters in a description

          Joe Hansche added a comment -

          Update: In Firefox, if I go to about:config, and look for network.http.accept-encoding, and remove "gzip" from that field (so it says only "deflate"), it works okay in Firefox. But can't seem to figure out how to disable gzip compression in Chrome. Keeping this open anyway, because I think there's still a bug here. I've been able to receive gzip encoding in the past, and it occurs in multiple browsers, so I do not believe this is a bug in my desktop.

          Joe Hansche added a comment - Update: In Firefox, if I go to about:config, and look for network.http.accept-encoding, and remove "gzip" from that field (so it says only "deflate"), it works okay in Firefox. But can't seem to figure out how to disable gzip compression in Chrome. Keeping this open anyway, because I think there's still a bug here. I've been able to receive gzip encoding in the past, and it occurs in multiple browsers, so I do not believe this is a bug in my desktop.

          evernat added a comment -

          snapshot build of the plugin fixing this issue

          evernat added a comment - snapshot build of the plugin fixing this issue

          evernat added a comment -

          Gzip compression was quite recently added on all pages in Jenkins, with a stapler CompressionFilter.
          So the monitoring plugin must not compress the monitoring reports a second time, otherwise the browser uncompress the monitoring reports only once and the result is still compressed.

          It was fixed in javamelody-core by this change:
          https://code.google.com/p/javamelody/source/detail?r=2865

          It will be released in v1.38 of javamelody-core and of the monitoring plugin.

          I have made a new snapshot build of the plugin and it is attached in this issue. You can submit it in the Advanced tab of the plugin manager.

          evernat added a comment - Gzip compression was quite recently added on all pages in Jenkins, with a stapler CompressionFilter. So the monitoring plugin must not compress the monitoring reports a second time, otherwise the browser uncompress the monitoring reports only once and the result is still compressed. It was fixed in javamelody-core by this change: https://code.google.com/p/javamelody/source/detail?r=2865 It will be released in v1.38 of javamelody-core and of the monitoring plugin. I have made a new snapshot build of the plugin and it is attached in this issue. You can submit it in the Advanced tab of the plugin manager.

          Vijay Kumar added a comment -

          I am experiencing the same issue discussed here on Jenkins 1.470 and monitoring plugin version: 1.38.0. I tried with the snapshot version attached herein and http://updates.jenkins-ci.org/download/plugins/monitoring/1.38.0/monitoring.hpi, both resulted in the same improper rendering.

          I could see and verify the presence of .../jenkins/plugins/monitoring/WEB-INF/lib/javamelody-core-1.38.0.jar

          Jenkins Environment tested on:
          Jenkins: 1.470
          Monitoring Plugin: 1.38.0
          Server: Red Hat Enterprise Linux Server release 5.3 (Tikanga)
          Browser: Firefox 13.0.1. IE8

          Vijay Kumar added a comment - I am experiencing the same issue discussed here on Jenkins 1.470 and monitoring plugin version: 1.38.0. I tried with the snapshot version attached herein and http://updates.jenkins-ci.org/download/plugins/monitoring/1.38.0/monitoring.hpi , both resulted in the same improper rendering. I could see and verify the presence of .../jenkins/plugins/monitoring/WEB-INF/lib/javamelody-core-1.38.0.jar Jenkins Environment tested on: Jenkins: 1.470 Monitoring Plugin: 1.38.0 Server: Red Hat Enterprise Linux Server release 5.3 (Tikanga) Browser: Firefox 13.0.1. IE8

          Vijay Kumar added a comment -

          I am experiencing the same issue discussed here on Jenkins 1.470 and monitoring plugin version: 1.38.0. I tried with the snapshot version attached herein and http://updates.jenkins-ci.org/download/plugins/monitoring/1.38.0/monitoring.hpi, both resulted in the same improper rendering.

          I could see and verify the presence of .../jenkins/plugins/monitoring/WEB-INF/lib/javamelody-core-1.38.0.jar

          Jenkins Environment tested on:
          Jenkins: 1.470
          Monitoring Plugin: 1.38.0
          Server: Red Hat Enterprise Linux Server release 5.3 (Tikanga)
          Browser: Firefox 13.0.1. IE8

          Vijay Kumar added a comment - I am experiencing the same issue discussed here on Jenkins 1.470 and monitoring plugin version: 1.38.0. I tried with the snapshot version attached herein and http://updates.jenkins-ci.org/download/plugins/monitoring/1.38.0/monitoring.hpi , both resulted in the same improper rendering. I could see and verify the presence of .../jenkins/plugins/monitoring/WEB-INF/lib/javamelody-core-1.38.0.jar Jenkins Environment tested on: Jenkins: 1.470 Monitoring Plugin: 1.38.0 Server: Red Hat Enterprise Linux Server release 5.3 (Tikanga) Browser: Firefox 13.0.1. IE8

          Joe Hansche added a comment -

          I can confirm the same experience as Vijay: 1.38.0 and 1.470, still shows the same double-compression results in Chrome, and still works in Firefox if I disable "gzip" compression.

          Joe Hansche added a comment - I can confirm the same experience as Vijay: 1.38.0 and 1.470, still shows the same double-compression results in Chrome, and still works in Firefox if I disable "gzip" compression.

          The same situation with version 1.471

          yury milchenko added a comment - The same situation with version 1.471

          evernat added a comment -

          Can you give the result of a thread dump? For example with
          http://localhost:8080/threadDump

          I am interested to see the stack-trace of some http request (with org.kohsuke.stapler.compression.CompressionFilter)

          evernat added a comment - Can you give the result of a thread dump? For example with http://localhost:8080/threadDump I am interested to see the stack-trace of some http request (with org.kohsuke.stapler.compression.CompressionFilter)

          Vijay Kumar added a comment -

          Please find the threadDump attached herein.

          Vijay Kumar added a comment - Please find the threadDump attached herein.

          evernat added a comment -

          I have reproduced the issue.

          In fact, the current fix does not work when the Jenkins security is enabled
          (because in this case, there is another filter which wraps the response in a org.acegisecurity.context.HttpSessionContextIntegrationFilter$OnRedirectUpdateSessionResponseWrapper).

          I will have to find another way to fix this.
          I expect to make a new release with the fix before the end of this week.

          evernat added a comment - I have reproduced the issue. In fact, the current fix does not work when the Jenkins security is enabled (because in this case, there is another filter which wraps the response in a org.acegisecurity.context.HttpSessionContextIntegrationFilter$OnRedirectUpdateSessionResponseWrapper). I will have to find another way to fix this. I expect to make a new release with the fix before the end of this week.

          evernat added a comment - - edited

          It is now fixed in javamelody-core with this change:
          https://code.google.com/p/javamelody/source/detail?r=2900
          which is used in the monitoring plugin with the svn change revision 40651

          Note that the compression of the monitoring reports is now disabled in the plugin and the reports will be compressed by Jenkins starting with v1.470.

          The new fix is available in the plugin v1.39 which was just released. (It may need 1 or 2 days to appear in your update center.)

          evernat added a comment - - edited It is now fixed in javamelody-core with this change: https://code.google.com/p/javamelody/source/detail?r=2900 which is used in the monitoring plugin with the svn change revision 40651 Note that the compression of the monitoring reports is now disabled in the plugin and the reports will be compressed by Jenkins starting with v1.470. The new fix is available in the plugin v1.39 which was just released. (It may need 1 or 2 days to appear in your update center.)

          A safer way to search for the jenkins compression in the filter chain

          see https://github.com/ndeloof/javamelody/commit/5d9475e7b709c3a68e7f6b97a03227b894820471
          (can't sent a pull request to javamelody, or is there a git mirror somewhere ?)

          Nicolas De Loof added a comment - A safer way to search for the jenkins compression in the filter chain see https://github.com/ndeloof/javamelody/commit/5d9475e7b709c3a68e7f6b97a03227b894820471 (can't sent a pull request to javamelody, or is there a git mirror somewhere ?)

          evernat added a comment -

          Yes, but I thought that "resp.getClass().getSimpleName().startsWith("Compression")" was already not very safe against Jenkins internals, so I preferred to configure the gzip feature.

          (there is currently no git mirror of javamelody, sorry.)

          evernat added a comment - Yes, but I thought that "resp.getClass().getSimpleName().startsWith("Compression")" was already not very safe against Jenkins internals, so I preferred to configure the gzip feature. (there is currently no git mirror of javamelody, sorry.)

          Vijay Kumar added a comment -

          Tested the monitoring plugin 1.39.0 with Jenkins 1.470, HTML rendering is perfect on Firefox 13.0.1 and IE8.
          Got plugin from: http://updates.jenkins-ci.org/download/plugins/monitoring/1.39.0/monitoring.hpi

          Vijay Kumar added a comment - Tested the monitoring plugin 1.39.0 with Jenkins 1.470, HTML rendering is perfect on Firefox 13.0.1 and IE8. Got plugin from: http://updates.jenkins-ci.org/download/plugins/monitoring/1.39.0/monitoring.hpi

          Code changed in jenkins
          User: evernat
          Path:
          pom.xml
          src/main/java/org/jvnet/hudson/plugins/monitoring/PluginImpl.java
          http://jenkins-ci.org/commit/monitoring-plugin/60b1cab1f303cfb62b68c2add6feedd16a8d2ef2
          Log:
          fix for JENKINS-14050: Unreadable HTML response for the monitoring reports (gzip, take 2 when security is enabled)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: evernat Path: pom.xml src/main/java/org/jvnet/hudson/plugins/monitoring/PluginImpl.java http://jenkins-ci.org/commit/monitoring-plugin/60b1cab1f303cfb62b68c2add6feedd16a8d2ef2 Log: fix for JENKINS-14050 : Unreadable HTML response for the monitoring reports (gzip, take 2 when security is enabled)

          Joe Hansche added a comment -

          This is fixed on most pages for the master node, but I still see the double-compression on the following /nodes URLs:

          • /monitoring/nodes?part=processes
          • /monitoring/nodes?part=sessions
          • /monitoring/nodes?part=mbeans
          • /monitoring/nodes?part=graph&graph=usedMemory

          Basically seems to be most of the links under /monitoring/nodes. Also (not the same error, but also problematic):

          • monitoring/nodes?part=heaphisto only shows an alert with NullPointerException, and then redirects.

          Joe Hansche added a comment - This is fixed on most pages for the master node, but I still see the double-compression on the following /nodes URLs: /monitoring/nodes?part=processes /monitoring/nodes?part=sessions /monitoring/nodes?part=mbeans /monitoring/nodes?part=graph&graph=usedMemory Basically seems to be most of the links under /monitoring/nodes. Also (not the same error, but also problematic): monitoring/nodes?part=heaphisto only shows an alert with NullPointerException, and then redirects.

          evernat added a comment -

          @Joe Hansche
          Yes, I have also seen this on the /nodes reports.
          It was fixed for the next release (1.40) in svn, revision 40676:
          https://svn.jenkins-ci.org/trunk/hudson/plugins/monitoring/src/main/java/net/bull/javamelody/NodesController.java

          If you do not want to wait for the next release, you can download a snapshot build from the current trunk at:
          http://javamelody.ci.cloudbees.com/job/jenkins%20plugin/ws/target/monitoring.hpi
          and then submit monitoring.hpi in the Plugin manager / Advanced tab of Jenkins.

          evernat added a comment - @Joe Hansche Yes, I have also seen this on the /nodes reports. It was fixed for the next release (1.40) in svn, revision 40676: https://svn.jenkins-ci.org/trunk/hudson/plugins/monitoring/src/main/java/net/bull/javamelody/NodesController.java If you do not want to wait for the next release, you can download a snapshot build from the current trunk at: http://javamelody.ci.cloudbees.com/job/jenkins%20plugin/ws/target/monitoring.hpi and then submit monitoring.hpi in the Plugin manager / Advanced tab of Jenkins.

          Code changed in jenkins
          User: evernat
          Path:
          pom.xml
          src/main/java/org/jvnet/hudson/plugins/monitoring/PluginImpl.java
          http://jenkins-ci.org/commit/monitoring-plugin/b7f06fcda87369944e51d11ccd8f28f37c7d8194
          Log:
          fix for JENKINS-14050: Unreadable HTML response for the monitoring reports (gzip, take 2 when security is enabled)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: evernat Path: pom.xml src/main/java/org/jvnet/hudson/plugins/monitoring/PluginImpl.java http://jenkins-ci.org/commit/monitoring-plugin/b7f06fcda87369944e51d11ccd8f28f37c7d8194 Log: fix for JENKINS-14050 : Unreadable HTML response for the monitoring reports (gzip, take 2 when security is enabled)

            evernat evernat
            jhansche Joe Hansche
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: