Skip to content

Commit

Permalink
Merge pull request #2093 from stephenc/jenkins-33384
Browse files Browse the repository at this point in the history
[FIXED JENKINS-33384] clean up the PluginServletFilter instances on Jenkins.cleanUp()
  • Loading branch information
daniel-beck committed Mar 9, 2016
2 parents d1dfbd2 + abf9fd3 commit bf9f68c
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 @@ -2882,6 +2883,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 bf9f68c

Please sign in to comment.