Branch: refs/heads/stable-2.32
  Home:   https://github.com/jenkinsci/jenkins
  Commit: fcfd271ad5ad5947075052d37177249c760f6184
      
https://github.com/jenkinsci/jenkins/commit/fcfd271ad5ad5947075052d37177249c760f6184
  Author: Oleg Nenashev <[email protected]>
  Date:   2016-12-08 (Thu, 08 Dec 2016)

  Changed paths:
    M core/src/main/java/hudson/Launcher.java

  Log Message:
  -----------
  [JENKINS-23271] - Prevent early deallocation of the Proc instance by GC in 
ProcStarter#join() (#2635)

* [JENKINS-23271] - Prevent the prelimimary deallocation of the Proc instance 
by GC

It is a hackish way, which likely prevents a preliminary deallocation of the 
spawned RemoteProc instance, which we see in JENKINS-23271. Proc instance was 
not actually required in the original code since we were creating and using 
RemoteInvocationHandler wrapper only, and the theory discussed with @stephenc 
was that object gets removed by Java8 garbage collector before we get into 
join().

This fix enforces the persistency of ProcStarter#start() result by adding 
logging and the enforced volatile field (maybe the last one is not really 
required, but JIT compiler in Java implementations may be smart enough to skip 
unused loggers)

This is a pretty old fix from August, which has been soak tested on my instance 
for several weeks (mid-August => Jenkins World). On the reference instance 
(just a small Jenkins instance with 4 agents and very frequent builds with 
CommandInterpreter steps) I saw 2 failures over the period. On the fixed 
instance - 0. It does not proof anything, but at least the fix was soak tested 
a bit

* [JENKINS-23271] - Get rid of the procHolderForJoin field

* [JENKINS-23271] - Also put the check into the finally statement as @stephenc 
proposed

* Remove assert

(cherry picked from commit fd6c6aff929be9818f4eb4b84ed6b4593356853f)


  Commit: 5500e5c00bc19e6c421c9aaa88f6dbb57c666db3
      
https://github.com/jenkinsci/jenkins/commit/5500e5c00bc19e6c421c9aaa88f6dbb57c666db3
  Author: Oleg Nenashev <[email protected]>
  Date:   2016-12-08 (Thu, 08 Dec 2016)

  Changed paths:
    M core/src/main/java/hudson/Launcher.java
    M core/src/main/java/hudson/Proc.java

  Log Message:
  -----------
  [JENKINS-23271] - Process statuses of Remote process join() operations 
directly inside methods (#2653)

* [JENKINS-23271] - Process statuses of Remote process join() operations 
directly inside methods

* [JENKINS-23271] - Also prevent the issue when the kill() command is the last 
call in the usage sequence

(cherry picked from commit 29893354a52efac20efcb4e0e91723f3bd889059)


Compare: 
https://github.com/jenkinsci/jenkins/compare/dacbe03e0d4e...5500e5c00bc1

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to