[JIRA] [remoting] (JENKINS-31718) JNLP slaves can fail to correctly negotiate a transport

4 views
Skip to first unread message

stephenconnolly@java.net (JIRA)

unread,
Nov 24, 2015, 5:26:01 AM11/24/15
to jenkinsc...@googlegroups.com
stephenconnolly created an issue
 
Jenkins / Bug JENKINS-31718
JNLP slaves can fail to correctly negotiate a transport
Issue Type: Bug Bug
Assignee: stephenconnolly
Components: remoting
Created: 24/Nov/15 10:25 AM
Priority: Critical Critical
Reporter: stephenconnolly

The changes in PR 41 introduced a regression whereby the read-ahead buffered input stream gets thrown away after the protocol has been detected but before the protocol negotiation starts.

The result of this is that depending on random timing factors, the capability and mode information that has been sent to the remote side may get lost and one side will infer a capability of 0 while the other side believes the agreed capability to be more.

When the remote side is assuming chunking, the connection will typically fail immediately with an error such as:

INFO: Protocol failed to establish channel
java.io.StreamCorruptedException: invalid stream header: 0A6CACED
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:806)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)
    at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:48)
    at hudson.remoting.ChannelBuilder.makeTransport(ChannelBuilder.java:430)
    at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:389)
    at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:310)
    at org.jenkinsci.remoting.engine.JnlpProtocol2.buildChannel(JnlpProtocol2.java:93)
    at org.jenkinsci.remoting.engine.JnlpProtocol.establishChannel(JnlpProtocol.java:79)
    at hudson.remoting.Engine.run(Engine.java:245)

But if the remote side is not assuming chunking then more subtle remoting issues could arise (e.g. if the remote slave is running an older pre-chunking slave.jar and connecting to a newer Jenkins... not that you should be doing that, but some people may... this reason is why I argue the issue is "Critical")

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.4.2#64017-sha1:e244265)
Atlassian logo

scm_issue_link@java.net (JIRA)

unread,
Nov 24, 2015, 5:29:01 AM11/24/15
to jenkinsc...@googlegroups.com
SCM/JIRA link daemon resolved as Fixed
Change By: SCM/JIRA link daemon
Status: Open Resolved
Resolution: Fixed

scm_issue_link@java.net (JIRA)

unread,
Nov 24, 2015, 5:29:01 AM11/24/15
to jenkinsc...@googlegroups.com
SCM/JIRA link daemon commented on Bug JENKINS-31718
 
Re: JNLP slaves can fail to correctly negotiate a transport

Code changed in jenkins
User: Stephen Connolly
Path:
src/main/java/hudson/remoting/Capability.java
src/main/java/hudson/remoting/ChannelBuilder.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol1.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol2.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol3.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol1Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol2Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol3Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocolTest.java
http://jenkins-ci.org/commit/remoting/116315728249eb392b9af0de0be5850959536c03
Log:
[FIXED JENKINS-31718] Preserve the BufferedInputStream when building the transport

  • For now I do not have the energy to fix the tests to not need the 'null' backdoor.
  • Most likely some non-mock based tests would be better and likely would have caught this regression sooner.

scm_issue_link@java.net (JIRA)

unread,
Nov 24, 2015, 7:47:02 AM11/24/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Stephen Connolly
Path:

src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol1.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol2.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol3.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol1Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol2Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol3Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocolTest.java

http://jenkins-ci.org/commit/remoting/015e280ddc20b858d810349a6243abba6741044b
Log:

JENKINS-31718 Fix the tests
  • The tests no longer pass in a null buffered input stream and thus we can remove the null handling from the protocols
  • Unsure whether the buffer may affect JnlpProtocol3 performance, but leaving it there to highlight the potential stream corruption if the buffer gets thrown away.

jglick@cloudbees.com (JIRA)

unread,
Nov 24, 2015, 10:18:04 AM11/24/15
to jenkinsc...@googlegroups.com
Jesse Glick started work on Bug JENKINS-31718
 
Change By: Jesse Glick
Status: Open In Progress

jglick@cloudbees.com (JIRA)

unread,
Nov 24, 2015, 10:18:04 AM11/24/15
to jenkinsc...@googlegroups.com

jglick@cloudbees.com (JIRA)

unread,
Nov 24, 2015, 10:18:04 AM11/24/15
to jenkinsc...@googlegroups.com
Jesse Glick reopened an issue
Change By: Jesse Glick
Resolution: Fixed
Status: Resolved Reopened

jglick@cloudbees.com (JIRA)

unread,
Nov 24, 2015, 10:26:01 AM11/24/15
to jenkinsc...@googlegroups.com

jglick@cloudbees.com (JIRA)

unread,
Nov 24, 2015, 11:16:01 AM11/24/15
to jenkinsc...@googlegroups.com
Jesse Glick updated an issue
Change By: Jesse Glick
Labels: lts-candidate regression

scm_issue_link@java.net (JIRA)

unread,
Nov 24, 2015, 11:24:01 AM11/24/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Stephen Connolly
Path:

src/main/java/hudson/remoting/Capability.java
src/main/java/hudson/remoting/ChannelBuilder.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol.java


src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol1.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol2.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol3.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol1Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol2Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol3Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocolTest.java


Log:
[FIXED JENKINS-31718] Preserve the BufferedInputStream when building the transport

  • For now I do not have the energy to fix the tests to not need the 'null' backdoor.
  • Most likely some non-mock based tests would be better and likely would have caught this regression sooner.

scm_issue_link@java.net (JIRA)

unread,
Nov 24, 2015, 11:24:04 AM11/24/15
to jenkinsc...@googlegroups.com
SCM/JIRA link daemon resolved as Fixed
Status: In Progress Resolved
Resolution: Fixed

scm_issue_link@java.net (JIRA)

unread,
Nov 24, 2015, 11:24:04 AM11/24/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Stephen Connolly
Path:

src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol1.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol2.java
src/main/java/org/jenkinsci/remoting/engine/JnlpProtocol3.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol1Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol2Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocol3Test.java
src/test/java/org/jenkinsci/remoting/engine/JnlpProtocolTest.java

JENKINS-31718 Fix the tests
  • The tests no longer pass in a null buffered input stream and thus we can remove the null handling from the protocols
  • Unsure whether the buffer may affect JnlpProtocol3 performance, but leaving it there to highlight the potential stream corruption if the buffer gets thrown away.

jglick@cloudbees.com (JIRA)

unread,
Nov 25, 2015, 1:10:03 PM11/25/15
to jenkinsc...@googlegroups.com
Jesse Glick reopened an issue
 

Not fixed until integrated into core.

Change By: Jesse Glick
Resolution: Fixed
Status: Resolved Reopened

jglick@cloudbees.com (JIRA)

unread,
Nov 25, 2015, 1:10:04 PM11/25/15
to jenkinsc...@googlegroups.com

jglick@cloudbees.com (JIRA)

unread,
Nov 25, 2015, 1:10:04 PM11/25/15
to jenkinsc...@googlegroups.com
Jesse Glick started work on Bug JENKINS-31718
 
Change By: Jesse Glick
Status: Open In Progress

scm_issue_link@java.net (JIRA)

unread,
Nov 25, 2015, 3:00:02 PM11/25/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Jesse Glick
Path:
pom.xml
http://jenkins-ci.org/commit/jenkins/e6d8500dd8e9b157ae8c54aec6fd42286e88301a
Log:
[FIXED JENKINS-31718] Integrated a new version of Remoting with a fix for a regression in concurrent socket connections.

scm_issue_link@java.net (JIRA)

unread,
Nov 25, 2015, 3:00:03 PM11/25/15
to jenkinsc...@googlegroups.com
SCM/JIRA link daemon resolved as Fixed
Change By: SCM/JIRA link daemon
Status: In Progress Resolved
Resolution: Fixed

scm_issue_link@java.net (JIRA)

unread,
Nov 25, 2015, 3:00:03 PM11/25/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Kohsuke Kawaguchi
Path:
pom.xml
http://jenkins-ci.org/commit/jenkins/940796f04fc43aed750aff970bc4fad4793f068f
Log:
Merge pull request #1927 from jglick/remoting-

JENKINS-31718

JENKINS-31718 Integrated a new version of Remoting

scm_issue_link@java.net (JIRA)

unread,
Nov 25, 2015, 3:08:04 PM11/25/15
to jenkinsc...@googlegroups.com

Code changed in jenkins


User: Jesse Glick
Path:
pom.xml


Log:
[FIXED JENKINS-31718] Integrated a new version of Remoting with a fix for a regression in concurrent socket connections.

(cherry picked from commit e6d8500dd8e9b157ae8c54aec6fd42286e88301a)

In the project meeting today we decided to pull this in.

dogfood@java.net (JIRA)

unread,
Nov 26, 2015, 6:42:05 PM11/26/15
to jenkinsc...@googlegroups.com
dogfood commented on Bug JENKINS-31718

Integrated in jenkins_main_trunk #4373
[FIXED JENKINS-31718] Integrated a new version of Remoting with a fix for a regression in concurrent socket connections. (Revision e6d8500dd8e9b157ae8c54aec6fd42286e88301a)
[FIXED JENKINS-31718] Integrated a new version of Remoting with a fix for a regression in concurrent socket connections. (Revision 9e321a4a0eefde421709647f0f15cb7bc8da61d1)

Result = SUCCESS
jesse glick : e6d8500dd8e9b157ae8c54aec6fd42286e88301a
Files :

  • pom.xml

kohsuke : 9e321a4a0eefde421709647f0f15cb7bc8da61d1
Files :

  • pom.xml

dbeck@cloudbees.com (JIRA)

unread,
Dec 10, 2015, 5:43:01 AM12/10/15
to jenkinsc...@googlegroups.com
Daniel Beck updated an issue
 
Change By: Daniel Beck
Labels: lts 1.625.3 - candidate fixed  regression

dogfood@java.net (JIRA)

unread,
Jan 14, 2016, 7:11:12 AM1/14/16
to jenkinsc...@googlegroups.com
dogfood commented on Bug JENKINS-31718
 
Re: JNLP slaves can fail to correctly negotiate a transport

Integrated in jenkins_2.0 #5
[FIXED JENKINS-31718] Integrated a new version of Remoting with a fix (Revision e6d8500dd8e9b157ae8c54aec6fd42286e88301a)
[FIXED JENKINS-31718] Integrated a new version of Remoting with a fix (Revision 9e321a4a0eefde421709647f0f15cb7bc8da61d1)

Result = SUCCESS
jesse glick : e6d8500dd8e9b157ae8c54aec6fd42286e88301a
Files :

  • pom.xml

kohsuke : 9e321a4a0eefde421709647f0f15cb7bc8da61d1
Files :

  • pom.xml

stephenconnolly@java.net (JIRA)

unread,
Jul 13, 2016, 5:08:13 AM7/13/16
to jenkinsc...@googlegroups.com
stephenconnolly closed an issue as Fixed
 
Change By: stephenconnolly
Status: Resolved Closed
This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c)
Atlassian logo
Reply all
Reply to author
Forward
0 new messages