File tree 2 files changed +25
-0
lines changed
2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change 42
42
import java .util .concurrent .CopyOnWriteArrayList ;
43
43
import java .util .logging .Level ;
44
44
import java .util .logging .Logger ;
45
+ import org .kohsuke .accmod .Restricted ;
46
+ import org .kohsuke .accmod .restrictions .NoExternalUse ;
45
47
46
48
/**
47
49
* Servlet {@link Filter} that chains multiple {@link Filter}s, provided by plugins
@@ -142,5 +144,25 @@ public void destroy() {
142
144
list .clear ();
143
145
}
144
146
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
+
145
167
private static final Logger LOGGER = Logger .getLogger (PluginServletFilter .class .getName ());
146
168
}
Original file line number Diff line number Diff line change 178
178
import hudson .util .Memoizer ;
179
179
import hudson .util .MultipartFormDataParser ;
180
180
import hudson .util .NamingThreadFactory ;
181
+ import hudson .util .PluginServletFilter ;
181
182
import hudson .util .RemotingDiagnostics ;
182
183
import hudson .util .RemotingDiagnostics .HeapDump ;
183
184
import hudson .util .TextFile ;
@@ -2882,6 +2883,8 @@ public void run() {
2882
2883
LOGGER .log (Level .WARNING , "Failed to shut down properly" ,e );
2883
2884
}
2884
2885
2886
+ PluginServletFilter .cleanUp ();
2887
+
2885
2888
LogFactory .releaseAll ();
2886
2889
2887
2890
theInstance = null ;
You can’t perform that action at this time.
0 commit comments