ASF Bugzilla – Attachment 22408 Details for
Bug 41059
WebAppClassLoader clearReferences code break running threads
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Adds preliminary pass to clearReferences to prevent untimely class initialization
bug41059.patch (text/plain), 1.85 KB, created by
Curt Arnold
on 2008-08-07 22:09:08 UTC
(
hide
)
Description:
Adds preliminary pass to clearReferences to prevent untimely class initialization
Filename:
MIME Type:
Creator:
Curt Arnold
Created:
2008-08-07 22:09:08 UTC
Size:
1.85 KB
patch
obsolete
>Index: java/org/apache/catalina/loader/WebappClassLoader.java >=================================================================== >--- java/org/apache/catalina/loader/WebappClassLoader.java (revision 683845) >+++ java/org/apache/catalina/loader/WebappClassLoader.java (working copy) >@@ -1617,7 +1617,29 @@ > // Null out any static or final fields from loaded classes, > // as a workaround for apparent garbage collection bugs > if (ENABLE_CLEAR_REFERENCES) { >- Iterator loadedClasses = ((HashMap) resourceEntries.clone()).values().iterator(); >+ java.util.Collection values = ((HashMap) resourceEntries.clone()).values(); >+ Iterator loadedClasses = values.iterator(); >+ // >+ // walk through all loaded class to trigger initialization for >+ // any uninitialized classes, otherwise initialization of >+ // one class may call a previously cleared class. >+ while(loadedClasses.hasNext()) { >+ ResourceEntry entry = (ResourceEntry) loadedClasses.next(); >+ if (entry.loadedClass != null) { >+ Class clazz = entry.loadedClass; >+ try { >+ Field[] fields = clazz.getDeclaredFields(); >+ for (int i = 0; i < fields.length; i++) { >+ if(Modifier.isStatic(fields[i].getModifiers())) { >+ fields[i].get(null); >+ break; >+ } >+ } >+ } catch(Throwable t) { >+ } >+ } >+ } >+ loadedClasses = values.iterator(); > while (loadedClasses.hasNext()) { > ResourceEntry entry = (ResourceEntry) loadedClasses.next(); > if (entry.loadedClass != null) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 41059
: 22408