Skip to content

Commit d72076c

Browse files
stephencolivergondza
authored andcommittedMar 30, 2016
[FIXED JENKINS-33384] clean up the PluginServletFilter instances on Jenkins.cleanUp()
(cherry picked from commit abf9fd3)
1 parent 003f1e5 commit d72076c

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
 

‎core/src/main/java/hudson/util/PluginServletFilter.java

+22
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
import java.util.concurrent.CopyOnWriteArrayList;
4343
import java.util.logging.Level;
4444
import java.util.logging.Logger;
45+
import org.kohsuke.accmod.Restricted;
46+
import org.kohsuke.accmod.restrictions.NoExternalUse;
4547

4648
/**
4749
* Servlet {@link Filter} that chains multiple {@link Filter}s, provided by plugins
@@ -142,5 +144,25 @@ public void destroy() {
142144
list.clear();
143145
}
144146

147+
@Restricted(NoExternalUse.class)
148+
public static void cleanUp() {
149+
PluginServletFilter instance = getInstance(Jenkins.getInstance().servletContext);
150+
if (instance != null) {
151+
for (Iterator<Filter> iterator = instance.list.iterator(); iterator.hasNext(); ) {
152+
Filter f = iterator.next();
153+
try {
154+
f.destroy();
155+
} catch (RuntimeException e) {
156+
LOGGER.log(Level.WARNING, "Filter " + f + " propagated an exception from its destroy method", e);
157+
} catch (Error e) {
158+
throw e; // we are not supposed to catch errors, don't log as could be an OOM
159+
} catch (Throwable e) {
160+
LOGGER.log(Level.SEVERE, "Filter " + f + " propagated an exception from its destroy method", e);
161+
}
162+
iterator.remove();
163+
}
164+
}
165+
}
166+
145167
private static final Logger LOGGER = Logger.getLogger(PluginServletFilter.class.getName());
146168
}

‎core/src/main/java/jenkins/model/Jenkins.java

+3
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@
178178
import hudson.util.Memoizer;
179179
import hudson.util.MultipartFormDataParser;
180180
import hudson.util.NamingThreadFactory;
181+
import hudson.util.PluginServletFilter;
181182
import hudson.util.RemotingDiagnostics;
182183
import hudson.util.RemotingDiagnostics.HeapDump;
183184
import hudson.util.TextFile;
@@ -2882,6 +2883,8 @@ public void run() {
28822883
LOGGER.log(Level.WARNING, "Failed to shut down properly",e);
28832884
}
28842885

2886+
PluginServletFilter.cleanUp();
2887+
28852888
LogFactory.releaseAll();
28862889

28872890
theInstance = null;

0 commit comments

Comments
 (0)
Please sign in to comment.