* master: (256 commits)
Noting #1817
Noting #1825
updated changelog for release
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release jenkins-1.629
[JENKINS-30139] Oleg wants to keep the data accessible so we have to go for immutable
[JENKINS-30139] Forgot to change this one
[JENKINS-30139] Add @Restricted to prevent external use of internal data
[JENKINS-30139] Switch from a big fat lock to a concurrent collection
[JENKINS-30374] Update obsolete help message
updated changelog for release
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release jenkins-1.628
noting merge of PR#1816 - use slf4j interceptors
Manage commons-logging and log4j as provided, include slf4j adapters for tests.
Exclude commons-logging and log4j in dangerous scopes compile and runtime in plugins as well.
Only exclude commons-logging and log4j in dangerous scopes compile and runtime.
Reintroduce enforcer rules as suggested by @jtnord.
Document allBuilds for Job remote access API
Include slf4j-jdk14 during tests.
...
Conflicts:
war/src/main/webapp/scripts/hudson-behavior.js
Properly revert job history for matrix and maven jobs (depending on
setup).
Examples paths include:
jobs/someproject/Environment=prod/builds
jobs/someproject/test$test/builds
I understand the motivation for this but I think it creates a bit of a maint/comprehension issue in that splits related classes across 2 different package hierarchies. I know we'll say that's ok but I don't like it. Just say'n.
Not sure why I ever had it in Queue.MockItem. I must have wrongly though it was private/protected in some way that did not allow it to live anywhere else.
Only add(T, int) was synchronized (and its javadoc claimed it was the
only one modifying .items), but all the bulk add methods were going
straight to addInternal() and then refreshTable() on their own. Then
countAllPoints() was iterating over items.values() which has undefined
behavior if the underlying Map changed.
Technically I didn't need to synchronize the current implementations of
remove(T) and add(T) since they delegated fully to add(T, int), but
that's leaking implementation details and inviting trouble down the road
when someone doesn't realize that.
Likewise, addInternal() and refreshTable() need not be synchronized
since they're only ever called from already synchronized methods, but
I'm inclined to go for belt & suspenders in the wake of these other
issues.
The contract for JnlpAgentReceiver in case of error on a claimed node is
to call handshake.error() but still return true so other handlers don't
take another crack a it.
Also added unit tests DefaultJnlpSlaveReceiver.
The original method of computing load statistics would compute the total and idle counts independently
which could lead to counting errors while jobs started in between the different state counting operations.
This change switches to returning a `LoadStatisticsSnapshot` so that callers will get a single consistent
view of the counts which was valid for at least one point in time during the collection of the snapshot.
- of course drive mappings are user scoped and can change from user session to user session, so calling them absolute is a bit of a joke... none the less, for our purposes they are absolute enough
Although the plugiun manager was vulnerable getting information
out of Jenkins was harder - however it would still be possible to
do bad things such as reading from /dev/zero on Linux