Skip to content

Commit

Permalink
[FIXED JENKINS-33384] clean up the PluginServletFilter instances on J…
Browse files Browse the repository at this point in the history
…enkins.cleanUp()
  • Loading branch information
stephenc committed Mar 8, 2016
1 parent bb7c8fc commit abf9fd3
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
22 changes: 22 additions & 0 deletions core/src/main/java/hudson/util/PluginServletFilter.java
Expand Up @@ -42,6 +42,8 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;

/**
* Servlet {@link Filter} that chains multiple {@link Filter}s, provided by plugins
Expand Down Expand Up @@ -142,5 +144,25 @@ public void destroy() {
list.clear();
}

@Restricted(NoExternalUse.class)
public static void cleanUp() {
PluginServletFilter instance = getInstance(Jenkins.getInstance().servletContext);
if (instance != null) {
for (Iterator<Filter> iterator = instance.list.iterator(); iterator.hasNext(); ) {
Filter f = iterator.next();
try {
f.destroy();
} catch (RuntimeException e) {
LOGGER.log(Level.WARNING, "Filter " + f + " propagated an exception from its destroy method", e);
} catch (Error e) {
throw e; // we are not supposed to catch errors, don't log as could be an OOM
} catch (Throwable e) {
LOGGER.log(Level.SEVERE, "Filter " + f + " propagated an exception from its destroy method", e);
}
iterator.remove();
}
}
}

private static final Logger LOGGER = Logger.getLogger(PluginServletFilter.class.getName());
}
3 changes: 3 additions & 0 deletions core/src/main/java/jenkins/model/Jenkins.java
Expand Up @@ -178,6 +178,7 @@
import hudson.util.Memoizer;
import hudson.util.MultipartFormDataParser;
import hudson.util.NamingThreadFactory;
import hudson.util.PluginServletFilter;
import hudson.util.RemotingDiagnostics;
import hudson.util.RemotingDiagnostics.HeapDump;
import hudson.util.TextFile;
Expand Down Expand Up @@ -2901,6 +2902,8 @@ public void run() {
LOGGER.log(Level.WARNING, "Failed to shut down properly",e);
}

PluginServletFilter.cleanUp();

LogFactory.releaseAll();

theInstance = null;
Expand Down

0 comments on commit abf9fd3

Please sign in to comment.