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

Enable TCP keep alive on the agent side of the connection

      This is especially critical when JNLP agents are operating behind a NAT router with a short timeout on the routing table (i.e. running in a cloud who's name may or may not rhyme with awe-sure)

          [JENKINS-38539] Enable TCP keep alive on the agent side of the connection

          Stephen Connolly created issue -
          Stephen Connolly made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]

          Code changed in jenkins
          User: Stephen Connolly
          Path:
          src/main/java/hudson/remoting/Engine.java
          src/main/java/hudson/remoting/Launcher.java
          src/main/java/hudson/remoting/jnlp/Main.java
          http://jenkins-ci.org/commit/remoting/ca8702173424f343ddd0bfec0b817f39c30d4549
          Log:
          [FIXED JENKINS-38539] Turn on SO_KEEPALIVE and provide CLI option to turn it off again

          • Most OSes have a default SO_KEEPALIVE of 2 hours, and perform keepalive without generating any significant traffic
            The master side of the connection already has SO_KEEPALIVE enabled, this just allows both OSes to keep their own
            guidance and therefore assist when tuning the agent side is more appropriate than changing the kernel parameters on
            the master side (as the master is handling the HTTP requests of users)
          • Would probably be perfectly safe to not even expose the -noKeepAlive option as the SO_KEEPALIVE should be invisible
            But there may be users that have the requirement to disable, so safer to provide the option
          • Change was developed against the stable-2.x branch

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/java/hudson/remoting/Engine.java src/main/java/hudson/remoting/Launcher.java src/main/java/hudson/remoting/jnlp/Main.java http://jenkins-ci.org/commit/remoting/ca8702173424f343ddd0bfec0b817f39c30d4549 Log: [FIXED JENKINS-38539] Turn on SO_KEEPALIVE and provide CLI option to turn it off again Most OSes have a default SO_KEEPALIVE of 2 hours, and perform keepalive without generating any significant traffic The master side of the connection already has SO_KEEPALIVE enabled, this just allows both OSes to keep their own guidance and therefore assist when tuning the agent side is more appropriate than changing the kernel parameters on the master side (as the master is handling the HTTP requests of users) Would probably be perfectly safe to not even expose the -noKeepAlive option as the SO_KEEPALIVE should be invisible But there may be users that have the requirement to disable, so safer to provide the option Change was developed against the stable-2.x branch
          SCM/JIRA link daemon made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: In Progress [ 3 ] New: Resolved [ 5 ]
          Stephen Connolly made changes -
          Remote Link New: This issue links to "remoting#110 (Web Link)" [ 14879 ]
          Stephen Connolly made changes -
          Status Original: Resolved [ 5 ] New: In Review [ 10005 ]

          Code changed in jenkins
          User: Stephen Connolly
          Path:
          src/main/java/hudson/remoting/Engine.java
          src/main/java/hudson/remoting/Launcher.java
          src/main/java/hudson/remoting/jnlp/Main.java
          http://jenkins-ci.org/commit/remoting/e3f352697b745c8b2d98dd0beac2313920581720
          Log:
          [FIXED JENKINS-38539] Turn on SO_KEEPALIVE and provide CLI option to turn it off again (#110)

          • [FIXED JENKINS-38539] Turn on SO_KEEPALIVE and provide CLI option to turn it off again
          • Most OSes have a default SO_KEEPALIVE of 2 hours, and perform keepalive without generating any significant traffic
            The master side of the connection already has SO_KEEPALIVE enabled, this just allows both OSes to keep their own
            guidance and therefore assist when tuning the agent side is more appropriate than changing the kernel parameters on
            the master side (as the master is handling the HTTP requests of users)
          • Would probably be perfectly safe to not even expose the -noKeepAlive option as the SO_KEEPALIVE should be invisible
            But there may be users that have the requirement to disable, so safer to provide the option
          • Change was developed against the stable-2.x branch

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/java/hudson/remoting/Engine.java src/main/java/hudson/remoting/Launcher.java src/main/java/hudson/remoting/jnlp/Main.java http://jenkins-ci.org/commit/remoting/e3f352697b745c8b2d98dd0beac2313920581720 Log: [FIXED JENKINS-38539] Turn on SO_KEEPALIVE and provide CLI option to turn it off again (#110) [FIXED JENKINS-38539] Turn on SO_KEEPALIVE and provide CLI option to turn it off again Most OSes have a default SO_KEEPALIVE of 2 hours, and perform keepalive without generating any significant traffic The master side of the connection already has SO_KEEPALIVE enabled, this just allows both OSes to keep their own guidance and therefore assist when tuning the agent side is more appropriate than changing the kernel parameters on the master side (as the master is handling the HTTP requests of users) Would probably be perfectly safe to not even expose the -noKeepAlive option as the SO_KEEPALIVE should be invisible But there may be users that have the requirement to disable, so safer to provide the option Change was developed against the stable-2.x branch JENKINS-38541 Tweak help text for CLI -noKeepAlive option

          Merged to stable-2.x, will be in next release

          Stephen Connolly added a comment - Merged to stable-2.x, will be in next release
          Stephen Connolly made changes -
          Status Original: In Review [ 10005 ] New: Closed [ 6 ]

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          pom.xml
          http://jenkins-ci.org/commit/jenkins/3966b111f9f2f87d39854aefe870676fdd5cc4ae
          Log:
          [JENKINS-38539, JENKINS-37539] Update remoting from 2.62 to 2.62.2

          2.61 does not exist, there was an issue during the release
          Changes in 2.62: https://github.com/jenkinsci/remoting/blob/stable-2.x/CHANGELOG.md#2622

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: pom.xml http://jenkins-ci.org/commit/jenkins/3966b111f9f2f87d39854aefe870676fdd5cc4ae Log: [JENKINS-38539, JENKINS-37539] Update remoting from 2.62 to 2.62.2 2.61 does not exist, there was an issue during the release Changes in 2.62: https://github.com/jenkinsci/remoting/blob/stable-2.x/CHANGELOG.md#2622 JENKINS-38539 ( https://issues.jenkins-ci.org/browse/JENKINS-38539 ) - Stability: Turn on SO_KEEPALIVE and provide CLI option to turn it off again. ( https://github.com/jenkinsci/remoting/pull/110 ) JENKINS-37539 ( https://issues.jenkins-ci.org/browse/JENKINS-37539 ) - Prevent <code>NullPointerException</code> in <code>Engine#connect()</code> when host or port parameters are <code>null</code> or empty. ( https://github.com/jenkinsci/remoting/pull/101 ) [CID-152201] - Fix resource leak in <code>remoting.jnlp.Main</code>. ( https://github.com/jenkinsci/remoting/pull/102 ) [CID-152200,CID-152202] - Resource leak in Encryption Cipher I/O streams on exceptional paths. ( https://github.com/jenkinsci/remoting/pull/104 )

            stephenconnolly Stephen Connolly
            stephenconnolly Stephen Connolly
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: