diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml new file mode 100644 index 000000000..94863e605 --- /dev/null +++ b/.mvn/extensions.xml @@ -0,0 +1,7 @@ + + + io.jenkins.tools.incrementals + git-changelist-maven-extension + 1.0-beta-7 + + diff --git a/.mvn/maven.config b/.mvn/maven.config new file mode 100644 index 000000000..2a0299c48 --- /dev/null +++ b/.mvn/maven.config @@ -0,0 +1,2 @@ +-Pconsume-incrementals +-Pmight-produce-incrementals diff --git a/CHANGELOG-2.x.md b/CHANGELOG-2.x.md index 8cf9d8b4d..ba5797a21 100644 --- a/CHANGELOG-2.x.md +++ b/CHANGELOG-2.x.md @@ -1,21 +1,18 @@ Remoting 2.x Changelog ==== -Below you can changelogs for Remoting 2.x. +:exclamation: Below you can see changelogs for the **obsolete** Remoting 2.x baseline. This version only contains bugfixes and performance improvements. Current mainline is Remoting 3.x, changelogs are available [here](CHANGELOG.md). - -The file also provides links to Jenkins versions, -which bundle the specified remoting version. -See [Jenkins changelog](https://jenkins.io/changelog/) for more details. +There is no plan to release new versions of Remoting 2.x. ##### 2.62.6 -Release date: Can be released on-demand +Release date: Jun 26, 2017 Fixed issues: -* [JENKINS-41852](https://issues.jenkins-ci.org/browse/JENKINS-41852) - +* [JENKINS-41852](https://issues.jenkins-ci.org/browse/JENKINS-41852) - Fix exported object pinning logic to prevent release due to the integer overflow. ([PR #148](https://github.com/jenkinsci/remoting/pull/148)) @@ -25,8 +22,8 @@ Release date: Feb 01, 2017 Fixed issues: -* [SECURITY-383](https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2017-02-01) - -Blacklist classes vulnerable to a remote code execution involving the deserialization of various types in +* [SECURITY-383](https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2017-02-01) - +Blacklist classes vulnerable to a remote code execution involving the deserialization of various types in `javax.imageio.*`, `java.util.ServiceLoader`, and `java.net.URLClassLoader`. ##### 2.62.4 @@ -35,19 +32,19 @@ Release date: Nov 21, 2016 Fixed issues: -* [JENKINS-25218](https://issues.jenkins-ci.org/browse/JENKINS-25218) - +* [JENKINS-25218](https://issues.jenkins-ci.org/browse/JENKINS-25218) - Hardening of FifoBuffer operation logic. The change adds additional minor fixes to the original fix in `remoting-2.54`. ([PR #100](https://github.com/jenkinsci/remoting/pull/100)) Improvements: -* [JENKINS-39150](https://issues.jenkins-ci.org/browse/JENKINS-39150) - +* [JENKINS-39150](https://issues.jenkins-ci.org/browse/JENKINS-39150) - Add logic for dumping diagnostics across all the channels. ([PR #122](https://github.com/jenkinsci/remoting/pull/122), [PR #125](https://github.com/jenkinsci/remoting/pull/125)) -* [JENKINS-39543](https://issues.jenkins-ci.org/browse/JENKINS-39543) - +* [JENKINS-39543](https://issues.jenkins-ci.org/browse/JENKINS-39543) - Improve the caller/callee correlation diagnostics in thread dumps. ([PR #119](https://github.com/jenkinsci/remoting/pull/119)) -* [JENKINS-39290](https://issues.jenkins-ci.org/browse/JENKINS-39290) - +* [JENKINS-39290](https://issues.jenkins-ci.org/browse/JENKINS-39290) - Add the `org.jenkinsci.remoting.nio.NioChannelHub.disabled` flag for disabling NIO (mostly for debugging purposes). ([PR #123](https://github.com/jenkinsci/remoting/pull/123)) @@ -55,7 +52,7 @@ Add the `org.jenkinsci.remoting.nio.NioChannelHub.disabled` flag for disabling N Release date: (Nov 13, 2016) => Jenkins 2.19.3 LTS -* [SECURITY-360](https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2016-11-16) - +* [SECURITY-360](https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2016-11-16) - Blacklist serialization of particular classes to close the Remote code execution vulnerability. ([Commit #b7ac85ed4ae41482d9754a881df91d2eb86d047d](https://github.com/jenkinsci/remoting/commit/b7ac85ed4ae41482d9754a881df91d2eb86d047d)) @@ -65,33 +62,33 @@ Release date: (Oct 7, 2016) => Jenkins 2.19.3 LTS Fixed issues: -* [JENKINS-38539](https://issues.jenkins-ci.org/browse/JENKINS-38539) - +* [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) - +* [JENKINS-37539](https://issues.jenkins-ci.org/browse/JENKINS-37539) - Prevent NullPointerException in Engine#connect() when host or port parameters are null or empty. (https://github.com/jenkinsci/remoting/pull/101) -* [CID-152201] - +* [CID-152201] - Fix resource leak in remoting.jnlp.Main. (https://github.com/jenkinsci/remoting/pull/102) -* [CID-152200,CID-152202] - +* [CID-152200,CID-152202] - Resource leak in Encryption Cipher I/O streams on exceptional paths. (https://github.com/jenkinsci/remoting/pull/104) -##### 2.62 +##### 2.62 Release date: (Aug 14, 2016) => Jenkins 2.17, 2.19.1 LTS Fixed issues: -* [JENKINS-22853](https://issues.jenkins-ci.org/browse/JENKINS-22853) - +* [JENKINS-22853](https://issues.jenkins-ci.org/browse/JENKINS-22853) - Be robust against the delayed EOF command when unexporting input and output streams. (https://github.com/jenkinsci/remoting/pull/97) -* Fixed ~20 minor issues reported by FindBugs. +* Fixed ~20 minor issues reported by FindBugs. More fixes to be delivered in future versions. (https://github.com/jenkinsci/remoting/pull/96) Enhancements: -* [JENKINS-37218](https://issues.jenkins-ci.org/browse/JENKINS-37218) - +* [JENKINS-37218](https://issues.jenkins-ci.org/browse/JENKINS-37218) - Performance: ClassFilter does not use Regular Expressions anymore to match String.startsWith patterns. (https://github.com/jenkinsci/remoting/pull/92) * [JENKINS-37031](https://issues.jenkins-ci.org/browse/JENKINS-37031) @@ -103,7 +100,7 @@ Performance: ClassFilter does not use Regular Expressions anymore t Release date: (Aug 5, 2016) => Jenkins 2.17, 2.19.1 LTS Fixed issues: -* [JENKINS-37140](https://issues.jenkins-ci.org/browse/JENKINS-37140) - +* [JENKINS-37140](https://issues.jenkins-ci.org/browse/JENKINS-37140) - JNLP Slave connection issue with *JNLP3-connect* protocol when the generated encrypted cookie contains a newline symbols. (https://github.com/jenkinsci/remoting/pull/95) * [JENKINS-36991](https://issues.jenkins-ci.org/browse/JENKINS-36991) - @@ -119,24 +116,24 @@ Enhancements: Release date: (June 10, 2016) => Jenkins 2.9, 2.7.2 Fixed issues: -* [JENKINS-22722](https://issues.jenkins-ci.org/browse/JENKINS-22722) - -Make the channel reader tolerant against Socket timeouts. +* [JENKINS-22722](https://issues.jenkins-ci.org/browse/JENKINS-22722) - +Make the channel reader tolerant against Socket timeouts. (https://github.com/jenkinsci/remoting/pull/80) -* [JENKINS-32326](https://issues.jenkins-ci.org/browse/JENKINS-32326) - -Support no_proxy environment variable. +* [JENKINS-32326](https://issues.jenkins-ci.org/browse/JENKINS-32326) - +Support no_proxy environment variable. (https://github.com/jenkinsci/remoting/pull/84) -* [JENKINS-35190](https://issues.jenkins-ci.org/browse/JENKINS-35190) - -Do not invoke PingFailureAnalyzer for agent=>master ping failures. +* [JENKINS-35190](https://issues.jenkins-ci.org/browse/JENKINS-35190) - +Do not invoke PingFailureAnalyzer for agent=>master ping failures. (https://github.com/jenkinsci/remoting/pull/85) -* [JENKINS-31256](https://issues.jenkins-ci.org/browse/JENKINS-31256) - - hudson.Remoting.Engine#waitForServerToBack now uses credentials for connection. +* [JENKINS-31256](https://issues.jenkins-ci.org/browse/JENKINS-31256) - + hudson.Remoting.Engine#waitForServerToBack now uses credentials for connection. (https://github.com/jenkinsci/remoting/pull/87) -* [JENKINS-35494](https://issues.jenkins-ci.org/browse/JENKINS-35494) - -Fix issues in file management in hudson.remoting.Launcher (main executable class). +* [JENKINS-35494](https://issues.jenkins-ci.org/browse/JENKINS-35494) - +Fix issues in file management in hudson.remoting.Launcher (main executable class). (https://github.com/jenkinsci/remoting/pull/88) Enhancements: -* Ensure a message is logged if remoting fails to override the default ClassFilter. +* Ensure a message is logged if remoting fails to override the default ClassFilter. (https://github.com/jenkinsci/remoting/pull/80) ##### 2.59 @@ -144,8 +141,8 @@ Enhancements: Release date: (May 13, 2016) => Jenkins 2.4, 2.7.1 Enhancements: -* [JENKINS-34819](https://issues.jenkins-ci.org/browse/JENKINS-34819) - -Allow disabling the remoting protocols individually. Works around issues like [JENKINS-34121](https://issues.jenkins-ci.org/browse/JENKINS-34121) +* [JENKINS-34819](https://issues.jenkins-ci.org/browse/JENKINS-34819) - +Allow disabling the remoting protocols individually. Works around issues like [JENKINS-34121](https://issues.jenkins-ci.org/browse/JENKINS-34121) (https://github.com/jenkinsci/remoting/pull/83) ##### 2.58 @@ -153,15 +150,14 @@ Allow disabling the remoting protocols individually. Works around issues like [J Release date: (May 11, 2016) => Jenkins 2.4, 2.7.1 Fixes issues: -* [JENKINS-34213](https://issues.jenkins-ci.org/browse/JENKINS-34213) - +* [JENKINS-34213](https://issues.jenkins-ci.org/browse/JENKINS-34213) - Ensure that the unexporter cleans up whatever it can each sweep. (https://github.com/jenkinsci/remoting/pull/81) -* [JENKINS-19445](https://issues.jenkins-ci.org/browse/JENKINS-19445) - +* [JENKINS-19445](https://issues.jenkins-ci.org/browse/JENKINS-19445) - Force class load on UserRequest in order to prevent deadlock on windows nodes when using JNA and Subversion. (https://github.com/jenkinsci/remoting/pull/82) Enhancements: -* [JENKINS-34808](https://issues.jenkins-ci.org/browse/JENKINS-34808) - -Allow user to adjust socket timeout in the channel reader. +* [JENKINS-34808](https://issues.jenkins-ci.org/browse/JENKINS-34808) - +Allow user to adjust socket timeout in the channel reader. (https://github.com/jenkinsci/remoting/pull/68) - diff --git a/CHANGELOG.md b/CHANGELOG.md index 16283aaa9..b0309623c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,283 @@ Changelog ==== -Below you can changelogs for the trunk version of remoting. +Below you can read the changelogs for the trunk version of remoting. This file also provides links to Jenkins versions, which bundle the specified remoting version. See [Jenkins changelog](https://jenkins.io/changelog/) for more details. +##### 3.29 + +Release date: February 5, 2019 + +* [JENKINS-55976](https://issues.jenkins-ci.org/browse/JENKINS-55976) Add missing log call. + +##### 3.28 + +Release date: December 10, 2018 + +* [JENKINS-48778](https://issues.jenkins-ci.org/browse/JENKINS-48778) Enhance the no_proxy configurations. See [NO_PROXY Environment Variable](docs/no_proxy.md) for documentation. +* Better diagnostics for errors from RemoteClassLoader.fetch4. +* Ignore attempts to flush a ProxyOutputStream which has already been finalized. +* [JENKINS-51108](https://issues.jenkins-ci.org/browse/JENKINS-51108) - Allow remoting to publish incrementals. +* [JENKINS-47977](https://issues.jenkins-ci.org/browse/JENKINS-47977) - Jenkins build failed if Remoting could not create the JAR cache. +* [JENKINS-50730](https://issues.jenkins-ci.org/browse/JENKINS-50730) - Improve log messaging on reconnect. +* [JENKINS-49987](https://issues.jenkins-ci.org/browse/JENKINS-49987) - Clean up warnings about anonymous callable. +* [JENKINS-54005](https://issues.jenkins-ci.org/browse/JENKINS-54005) - Another instance of an unnecessarily severe warning when unexporting. + +##### 3.27 + +Release date: September 28, 2018 + +* Channel.notifyJar was being called too often. +* Downgrade error messages from SynchronousCommandTransport. +* [JENKINS-53569](https://issues.jenkins-ci.org/browse/JENKINS-53569) - Remove unnecessary locking that could cause deadlock when removing a filter from the ProtocolStack. + +##### 3.26 + +Release date: August 31, 2018 + +* [JENKINS-52945](https://issues.jenkins-ci.org/browse/JENKINS-52945) - AnonymousClassWarnings should not warn about enums. +* [JENKINS-42533](https://issues.jenkins-ci.org/browse/JENKINS-42533) - Eliminate another excessively severe warning about trying to export already unexported object. + +##### 3.25 + +Release date: July 31, 2018 => Weekly 2.138 / LTS 2.121.3 + +* [SECURITY-637](https://jenkins.io/security/advisory/2018-08-15/) - Prevent deserialization of URL objects with host components + +##### 3.24 + +Release date: July 12, 2018 + +* Refresh the code-signing certificate +* No functional changes + +##### 3.23 + +Release date: June 29, 2018 + +* [JENKINS-52204](https://issues.jenkins-ci.org/browse/JENKINS-52204) - +Skip Tcp Agent Listener port availability check when `-tunnel` option is set +(regression in 3.22) + +##### 3.22 + +Release date: Jun 22, 2018 => 2.129 + +* [JENKINS-51818](https://issues.jenkins-ci.org/browse/JENKINS-51818) - +When connecting over TCP, agents will check availability of the master's TCP Agent Listener port +* [JENKINS-51841](https://issues.jenkins-ci.org/browse/JENKINS-51841) - +Extensibility: Offer a new `Channel#readFrom(Channel, byte[] payload)` method for a standardized command deserialization from the channel +* [PR #277](https://github.com/jenkinsci/remoting/pull/277) - +API: be explicit that `ChannelBuilder#getHeaderStream()` may return null + +##### 3.21 + +Enhancements: Jun 8, 2018 => Jenkins 2.127 + +* [JENKINS-51551](https://issues.jenkins-ci.org/browse/JENKINS-51551) - +Developer API: Allow creating custom `CommandTransport` implementation in external +components. + * Reference implementation: [Remoting Kafka Plugin](https://github.com/jenkinsci/remoting-kafka-plugin) +* [PR #274](https://github.com/jenkinsci/remoting/pull/274) - +Do not print channel close reason stack traces for non-sent request responses when +`hudson.remoting.Request` logging level is lower than `FINE`. + +Fixed issues: + +* [JENKINS-51223](https://issues.jenkins-ci.org/browse/JENKINS-51223) - +`no_proxy` environment variable parsing logic did not properly support +domain suffixes in fully-qualified names. +Now it is possible to set suffixes like `.com` in `no_proxy`. +* [JENKINS-50965](https://issues.jenkins-ci.org/browse/JENKINS-50965) - +Fix malformed log message when loading of classes is forced by +the `hudson.remoting.RemoteClassLoader.force` system property. +* [PR #274](https://github.com/jenkinsci/remoting/pull/274) - +Prevent exception in IOHub when retrieving base thread name for handlers +when NIO selector is already closed (race condition). + +##### 3.20 + +Release date: Apr 18, 2018 => Jenkins 2.118, 2.121.1 LTS + +* Refresh the Code-signing certificate +* No functional changes + +##### 3.19 + +Release date: Mar 22, 2018 => Jenkins 2.113 + +* [JENKINS-49618](https://issues.jenkins-ci.org/browse/JENKINS-49618) - +Display Remoting version in the agent log when starting up the agent +* [JENKINS-50237](https://issues.jenkins-ci.org/browse/JENKINS-50237) - +Include a ProxyException to responses when returning an exception to a `UserRequest`s. + * This allows returning the exception details even if Jenkins 2.102+ refuses to deserialize the original exception + due to the whitelist violation + * More info: [JEP-200 announcement](https://jenkins.io/blog/2018/03/15/jep-200-lts/) + +##### 3.18 + +Release date: Mar 9, 2018 => Jenkins 2.112 + +* [JENKINS-49415](https://issues.jenkins-ci.org/browse/JENKINS-49415) - +Add uncaught exception handler to the Engine's executor service +* [JENKINS-49472](https://issues.jenkins-ci.org/browse/JENKINS-49472) - +Log channel name in StreamCorruptedExceptions +* [JENKINS-48561](https://issues.jenkins-ci.org/browse/JENKINS-48561) - +Give precedence to proxy exclusion list system property over environmental vars. +* [JENKINS-49994](https://issues.jenkins-ci.org/browse/JENKINS-49994) - +Add infrastructure for warning about remoting serialization of anonymous inner classes. +* [PR #258](https://github.com/jenkinsci/remoting/pull/258) - +Improve performance by disabling expensive diagnostics in `RemoteClassLoader` + +##### 3.17 + +Release date: Jan 30, 2018 => Jenkins 2.106 + +* [JENKINS-49027](https://issues.jenkins-ci.org/browse/JENKINS-49027) - +Improve reporting of JEP-200 violations in Remoting serialization. + * More info: [Announcement Blogpost](https://jenkins.io/blog/2018/01/13/jep-200/) +* [JENKINS-27035](https://issues.jenkins-ci.org/browse/JENKINS-27035) - +Add read/write events to [Channel.Listener](http://javadoc.jenkins.io/component/remoting/hudson/remoting/Channel.Listener.html) +to support collection of Request/Response statistics. + * More info: [Event Listeners Documentation](/docs/logging.md#event-listeners) +* [JENKINS-45897](https://issues.jenkins-ci.org/browse/JENKINS-45897) - +Improve string representation of `Request` types to improve log messages + +##### 3.16 + +Release date: Jan 10, 2018 => Jenkins 2.102 + +* [PR #208](https://github.com/jenkinsci/remoting/pull/208) - +Introduce the new `ClassFilter.setDefault` API which allows replacing the default Class Filter + * This is a foundation work for [JEP-200](https://github.com/jenkinsci/jep/tree/master/jep/200)/[JENKINS-47736](https://issues.jenkins-ci.org/browse/JENKINS-47736), + which switches the default Remoting/XStream blacklist to whitelist in the Jenkins core + * Other Remoting API users are adviced to do the same +* [PR #208](https://github.com/jenkinsci/remoting/pull/208) - +Update the blacklist in the default Class Filter to align it with the Jenkins core. +New entries: + * `^java[.]lang[.]reflect[.]Method$` + * `^net[.]sf[.]json[.].*` + * `^java[.]security[.]SignedObject$` ([SECURITY-429 advisory](https://jenkins.io/security/advisory/2017-04-26/#cli-unauthenticated-remote-code-execution)) +* [JENKINS-48686](https://issues.jenkins-ci.org/browse/JENKINS-48686) - +Replace the _slave_ term by _agent_ in logging, UI and Javadocs + + +##### 3.15 + +Release date: Dec 22, 2017 => Jenkins 2.98 + +Enhancements: + +* [JENKINS-48133](https://issues.jenkins-ci.org/browse/JENKINS-48133) - +Channel exceptions now record the channel name and other information when possible +* [PR #210](https://github.com/jenkinsci/remoting/pull/210) - +Allow disabling HTTPs certificate validation of JNLP endpoint when starting Remoting + * **WARNING**: This option undermines the HTTPs security and opens the connection to MiTM attacks. + Use it at your own risk +* [JENKINS-48055](https://issues.jenkins-ci.org/browse/JENKINS-48055) - +API: Introduce new `getChannelOrFail()` and `getOpenChannelOrFail()` methods in +[hudson.remoting.Callable](http://javadoc.jenkins.io/component/remoting/hudson/remoting/Callable.html). +* [JENKINS-37566](https://issues.jenkins-ci.org/browse/JENKINS-37566) - +API: `Channel#current()` now explicitly requires checking for `null`. +* [PR #227](https://github.com/jenkinsci/remoting/pull/227) - +API: Deprecate and restrict the obsolete [JNLP3 protocol](docs/protocols.md) utility classes + +Fixed issues: + +* [JENKINS-48309](https://issues.jenkins-ci.org/browse/JENKINS-48309) - +Prevent timeout in `AsyncFutureImpl#get(timeout)` when a spurious thread wakeup happens +before the timeout expiration. + * The issue also impacts [FutureImpl](http://javadoc.jenkins.io/hudson/model/queue/FutureImpl.html) in the Jenkins core +* [JENKINS-47965](https://issues.jenkins-ci.org/browse/JENKINS-47965) - +Prevent infinite hanging of JNLP4 `IOHub` selector threads when `IOHub` does not get closed properly + * Affected [protocols](docs/protocols.md): JNLP4 only +* [JENKINS-48130](https://issues.jenkins-ci.org/browse/JENKINS-48130) - +Prevent fatal failure of `NIOChannelHub` when an underlying executor service rejects a task execution. +After the change such failure terminates only a single channel + * Affected [protocols](docs/protocols.md): JNLP, JNLP2, CLI and CLI2. JNLP4 is not affected + * The change also improves diagnostics of `RejectedExecutionException` in other execution services +* [JENKINS-37670](https://issues.jenkins-ci.org/browse/JENKINS-37670) - +Throw the standard `UnsupportedClassVersionError` in `RemoteClassLoader` +when the bytecode is not supported. +* [JENKINS-37566](https://issues.jenkins-ci.org/browse/JENKINS-37566) - +Clean up all issues reported by FindBugs. Notable issues: + * Prevent infinite hanging of `Channel#waitForProperty()` when the channel hangs in the closing state. + * Prevent `NullPointerException`s in `Command#createdAt` handling logic and API + * Prevent serialization of `Callable`s in `NioChannelHub` selectors (JNLP1 and JNLP2 protocols) +* [JENKINS-46724](https://issues.jenkins-ci.org/browse/JENKINS-46724) - +Remove obsolete reflection calls in `RemoteClassloader` and `Launcher#checkTty()` +* [PR #234](https://github.com/jenkinsci/remoting/pull/234) - +`hudson.remoting.Capability` preamble initialization cannot longer throw exceptions + +Build flow: + +* [JENKINS-38696](https://issues.jenkins-ci.org/browse/JENKINS-38696) - +Fix Windows tests and enable them in the pull request builder +* [JENKINS-37566](https://issues.jenkins-ci.org/browse/JENKINS-37566) - +Enforce FindBugs in the pull request builder + + +##### 3.14 + +Release date: Nov 10, 2017 => [Jenkins 2.90](https://jenkins.io/changelog/#v2.90) + +Fixed issues: + +* [JENKINS-45294](https://issues.jenkins-ci.org/browse/JENKINS-45294) - +User-space RMI calls (including Jenkins core ones) will be rejected when the channel is being closed +(similar to [JENKINS-45023](https://issues.jenkins-ci.org/browse/JENKINS-45023) in 3.11). +It prevents channel hanging in edge cases. +* [JENKINS-47425](https://issues.jenkins-ci.org/browse/JENKINS-47425) - +Do not print full stack traces on network connection errors. +* [JENKINS-37566](https://issues.jenkins-ci.org/browse/JENKINS-37566) - +Cleanup a number of issues reported by FindBugs. +Notable ones: Unchecked file operations, improper synchronization. +* [JENKINS-47901](https://issues.jenkins-ci.org/browse/JENKINS-47901) - +Prevent uncaught `InvalidPathException` for file operations if and invalid path is passed from command line or API. +* [JENKINS-47942](https://issues.jenkins-ci.org/browse/JENKINS-47942) - +Performance: Reduce scope of Channel instance locks by property management. + +Build flow: + +* [PR #207](https://github.com/jenkinsci/remoting/pull/207) - +Jacoco does not longer run by default in the build, `jacoco` profile should be used. +* [PR #207](https://github.com/jenkinsci/remoting/pull/207) - +Update Jacoco version to make the reports compatible with Jenkins [Jacoco Plugin](https://plugins.jenkins.io/jacoco). + + +##### 3.13 => [Jenkins 2.85](https://jenkins.io/changelog/#v2.85) + +Release date: Oct 05, 2017 + +Improvements: + +* [JENKINS-38711](https://issues.jenkins-ci.org/browse/JENKINS-38711) - +Add uncaught exception handling logic to remoting threads. +Threads now either have failover or proper termination. + +Fixed issues: + +* [JENKINS-47132](https://issues.jenkins-ci.org/browse/JENKINS-47132) - +When an agent is waiting for master to be ready, +the port was not filled in the `Master isnt ready to talk to us on {0}. Will retry again` log message. + +##### 3.12 => [Jenkins 2.79](https://jenkins.io/changelog/#v2.79) + +Release date: Sep 14, 2017 => [Jenkins 2.79](https://jenkins.io/changelog/#v2.79) + +* [JENKINS-45755](https://issues.jenkins-ci.org/browse/JENKINS-45755) - +Prevent channel initialization failure when JAR Cache directory is not writable and the channel does not need this cache +(regression in 3.10). + * This issue causes a regression in Jenkins LTS 2.73.1 + See the [upgrade guide](https://jenkins.io/doc/upgrade-guide/2.73/#known-issue-agent-connection-failures-involving-jenkins-masters-with-undefined-or-non-writable-home-directory) for more info. +* [JENKINS-46140](https://issues.jenkins-ci.org/browse/JENKINS-46140) - +Improve representation of remote operation exceptions in logs. + ##### 3.11 -Release date: Coming Soon +Release date: Aug 18, 2017 => [Jenkins 2.76](https://jenkins.io/changelog/#v2.76) :exclamation: **Warning!** Starting from this release, Jenkins Remoting requires Java 8 to run. In edge cases it may require manual actions during the upgrade. @@ -48,6 +317,34 @@ Remoting build was failing when user name contained metacharacters. * [PR #190](https://github.com/jenkinsci/remoting/pull/190) - Enforce code signing verification when building Remoting with the `release` profile. +##### 3.10.2 + +Release date: Oct 05, 2017 + +:exclamation: This is a backport release for Jenkins 2.73.2, +which integrates changes from 3.11 and 3.12. + +* [JENKINS-45755](https://issues.jenkins-ci.org/browse/JENKINS-45755) - +Prevent channel initialization failure when JAR Cache directory is not writable and the channel does not need this cache +(regression in 3.10). +* [JENKINS-45023](https://issues.jenkins-ci.org/browse/JENKINS-45023) - +Prevent execution of `UserRequest`s when the channel is closed or being closed. +It prevents hanging of the channel in some cases. +* [JENKINS-46259](https://issues.jenkins-ci.org/browse/JENKINS-46259) - + Log all linkage errors when executing `UserRequest`s (generic remote operations started from API). +* [JENKINS-45233](https://issues.jenkins-ci.org/browse/JENKINS-45233) - + Log errors when Response message cannot be delivered due to the closed channel. + +Build Flow: + +* [JENKINS-37567](https://issues.jenkins-ci.org/browse/JENKINS-37567) - +Code signing: [@oleg-nenashev](https://github.com/oleg-nenashev) will be releasing Remoting JARs signed with his certificate +for the next 3.10.x releases. + +##### 3.10.1 + +This release is burned. + ##### 3.10 Release date: (Jun 26, 2017) => Jenkins 2.68 @@ -109,6 +406,8 @@ See the [Logging page](./docs/logging.md) for more details. Cleanup FindBugs-reported issues in ExportTable implementation (regression in 2.40). * [PR #153](https://github.com/jenkinsci/remoting/pull/153) - Prevent `NullPointerException` in `hudson.remoting.Channel.Ref()` when creating a reference to a `null` channel. +* [JENKINS-5374](https://issues.jenkins-ci.org/browse/JENKINS-5374) - +Plrevent `NullPointerException` when executing a `UserRequest` constructed with a null classloader reference. ##### 3.7 diff --git a/Jenkinsfile b/Jenkinsfile index 9c05f8610..179388e56 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,8 +8,7 @@ properties([[$class: 'BuildDiscarderProperty', /* These platforms correspond to labels in ci.jenkins.io, see: * https://github.com/jenkins-infra/documentation/blob/master/ci.adoc */ -//TODO: Enable Windows once JENKINS-38696 is fixed. No sense to spend CPU cycles before that -List platforms = ['linux'] +List platforms = ['linux', 'windows'] Map branches = [:] for (int i = 0; i < platforms.size(); ++i) { @@ -28,7 +27,7 @@ for (int i = 0; i < platforms.size(); ++i) { 'PATH+JDK=$JAVA_HOME/bin', ]) { timeout(30) { - String command = 'mvn --batch-mode clean install -Dmaven.test.failure.ignore=true' + String command = "mvn --batch-mode clean install -Dmaven.test.failure.ignore=true ${infra.isRunningOnJenkinsInfra() ? '-s settings-azure.xml' : ''} -e" if (isUnix()) { sh command } @@ -43,8 +42,10 @@ for (int i = 0; i < platforms.size(); ++i) { /* Archive the test results */ junit '**/target/surefire-reports/TEST-*.xml' - /* Archive the build artifacts */ - archiveArtifacts artifacts: 'target/**/*.jar' + if (label == 'linux') { + archiveArtifacts artifacts: 'target/**/*.jar' + findbugs pattern: '**/target/findbugsXml.xml' + } } } } diff --git a/README.md b/README.md index 783d7d788..1398f405b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Jenkins Remoting layer ==== +[![Join the chat at https://gitter.im/jenkinsci/remoting](https://badges.gitter.im/jenkinsci/remoting.svg)](https://gitter.im/jenkinsci/remoting?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + Jenkins remoting is an executable JAR, which implements communication layer in [Jenkins](https://jenkins.io) automation server. It's being used for master <=> agent(fka "slave") and master <=> CLI communications. @@ -37,6 +39,7 @@ Previous versions: Developer documentation: * [Contributing](CONTRIBUTING.md) +* [Javadoc](http://javadoc.jenkins.io/component/remoting/) * [Channel Termination Process](docs/close.md) ### Reporting issues @@ -53,5 +56,5 @@ by Winston Prakash, Oracle (the information is outdated) * [Making your plugin behave in distributed Jenkins](https://wiki.jenkins-ci.org/display/JENKINS/Making+your+plugin+behave+in+distributed+Jenkins) * [Writing an SCM plugin. Remoting examples](https://wiki.jenkins-ci.org/display/JENKINS/Remoting) * [Troubleshooting remoting issues](https://wiki.jenkins-ci.org/display/JENKINS/Remoting+issue) -* [Scaling Jenkins to Hundreds of Nodes](https://www.cloudbees.com/jenkins/juc-2015/abstracts/us-west/02-01-1600) -by Akshay Dayal, Google (remoting optimization, JNLP3) \ No newline at end of file +* [Scaling Jenkins to Hundreds of Nodes](https://www.youtube.com/watch?v=9-DUVroz7yk) +by Akshay Dayal, Google (remoting optimization, JNLP3) diff --git a/docs/configuration.md b/docs/configuration.md index d339a5474..20f0b7505 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -93,7 +93,7 @@ These properties require independent configuration on both sides of the channel. ${PROTOCOL_FULLY_QUALIFIED_NAME}.disabled, where PROTOCOL_FULLY_QUALIFIED_NAME equals - PROTOCOL_HANDLER_CLASSNAME without the Handler suffix., + PROTOCOL_HANDLER_CLASSNAME without the Handler suffix. false 2.59 2.4 @@ -119,6 +119,14 @@ These properties require independent configuration on both sides of the channel. JENKINS-41730 If specified, only the protocols from the list will be tried during the connection. The option provides protocol names, but the order of the check is defined internally and cannot be changed. + + NO_PROXY (or no_proxy) + + + + + Provides specifications for hosts that should not be proxied. See the NO_PROXY Environment Variable page for details on supported specifications. + 1.4 @@ -73,21 +78,20 @@ THE SOFTWARE. repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ - - true - - - false - + https://repo.jenkins-ci.org/public/ + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + org.codehaus.mojo animal-sniffer-annotations - 1.15 provided @@ -145,18 +149,6 @@ THE SOFTWARE. 1.10.19 test - - org.powermock - powermock-module-junit4 - 1.6.2 - test - - - org.powermock - powermock-api-mockito - 1.6.2 - test - org.jvnet @@ -190,7 +182,7 @@ THE SOFTWARE. org.kohsuke access-modifier-annotation - 1.7 + 1.12 jar true @@ -282,7 +274,7 @@ THE SOFTWARE. ${hudson.sign.providerClass} ${hudson.sign.providerArg} ${hudson.sign.tsa} - - - - - verify - - check - - - - maven-surefire-plugin - 2.19.1 + 3.0.0-M1 false 4 @@ -474,9 +421,9 @@ THE SOFTWARE. run-javadoc + package jar - javadoc @@ -536,6 +483,12 @@ THE SOFTWARE. sign + + + --pinentry-mode + loopback + + @@ -570,7 +523,7 @@ THE SOFTWARE. ${hudson.sign.keystore} ${hudson.sign.storetype} ${hudson.sign.providerClass} - ${hudson.sign.providerArg} + ${hudson.sign.providerArg} @@ -578,5 +531,31 @@ THE SOFTWARE. + + jacoco + + + + org.jacoco + jacoco-maven-plugin + 0.7.9 + + + + prepare-agent + + + + report + prepare-package + + report + + + + + + + diff --git a/settings-azure.xml b/settings-azure.xml new file mode 100644 index 000000000..a1e96394d --- /dev/null +++ b/settings-azure.xml @@ -0,0 +1,9 @@ + + + + azure + https://repo.azure.jenkins.io/public/ + repo.jenkins-ci.org + + + diff --git a/src/findbugs/excludeFilter.xml b/src/findbugs/excludeFilter.xml index 6015b02a4..6f349ad07 100644 --- a/src/findbugs/excludeFilter.xml +++ b/src/findbugs/excludeFilter.xml @@ -8,13 +8,19 @@ - - - - + + - + + + + + + + + +