Switch branches/tags
Find file Copy path
61 lines (41 sloc) 2.76 KB

Remoting 3 Compatibility Notes

This page describes compatibility of the Remoting 3 library. It addresses binary compatibility and also functional compatibility with old remoting and Java versions.

Establishing connection between Remoting 2.x and 3.x

Remoting 3 library still contains JNLP1-connect, JNLP2-connect and JNLP3-connect protocols. When any of these protocols is enabled on both sides, remoting versions will be able to establish connection between each other. This is a default behavior.

If JNLP4-connect is the only enabled protocol on one of the sides, Remoting 2.x and 3.x versions will be unable to establish the connection between each other. It may happen only in the case of the custom configuration via system properties.

Java compatibility

In Remoting 3 the required Java version is updated from Java 6 to Java 7.

In Jenkins project:

  • Nothing changes, starting from 1.610 Java 6 is not supported in Jenkins, on both master and slaves/agents
  • In particular cases it was possible to run Jenkins slaves/agents on Java 6 with Remoting 2.x, but this configuration was not officially supported

In other projects:

  • For projects using Java 7 or 8, the upgrade is safe
  • For projects using Java 6, Remoting 3.x cannot be used there without upgrade to Java 7
    • Remoting 2.x stable version can be temporarily used instead

Binary compatibility

Formally Remoting 3.x is not binary compatible with Remoting 2.x, but the scope of changes is limited to a single change with a limited impact.

Protocol class hierarchy change:

  • JnlpProtocol / JnlpProtocol1 / JnlpProtocol2 / JnlpProtocol3 classes were removed. Their functionality has been moved to the JnlpProtocolHandler class and its subclasses.
  • JnlpServerHandshake class and all its subclasses have been removed from the library
  • Several dependent internal classes have been removed or modified

The only known usage of the classes was in the Jenkins core, the incompatibility is fixed in the pull-request #2492.

Impact of the changes on Jenkins plugins:

  • No impact if the plugins do not implement their own Remoting protocols
  • There is no such plugins in open-source Jenkins plugins available in the main update center or hosted on GitHub
  • There may be impact on other plugin implementation

Impact of the changes on other projects:

  • Protocol implementations and protocol handling logic may require an update
  • Pull request #2492 can be used as a reference