From 5eada311c640663a2dbe40c69a7257e80be9ffca Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Mon, 19 Nov 2012 12:29:02 -0800 Subject: [PATCH] [FIXED JENKINS-15869] revisiting the fix by vetting the deserialized NodeMonitors to make sure they are valid. --- core/src/main/java/hudson/model/ComputerSet.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/hudson/model/ComputerSet.java b/core/src/main/java/hudson/model/ComputerSet.java index 674d7e54c6..72632bedae 100644 --- a/core/src/main/java/hudson/model/ComputerSet.java +++ b/core/src/main/java/hudson/model/ComputerSet.java @@ -47,6 +47,7 @@ import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST; import java.io.File; import java.io.IOException; import java.util.AbstractList; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -388,7 +389,16 @@ public final class ComputerSet extends AbstractModelObject implements Describabl if(xf.exists()) { DescribableList> persisted = (DescribableList>) xf.read(); - r.replaceBy(persisted.toList()); + List sanitized = new ArrayList(); + for (NodeMonitor nm : persisted) { + try { + nm.getDescriptor(); + sanitized.add(nm); + } catch (Throwable e) { + // the descriptor didn't load? see JENKINS-15869 + } + } + r.replaceBy(sanitized); } // if we have any new monitors, let's add them -- GitLab