Red Hat Bugzilla – Bug 910185
Weld's TypeSafeObserverResolver cache is unbounded
Last modified: 2016-10-31 21:37:30 EDT
The cache in TypeSafeObserverResolver, as used by TransactionalObserverNotifier does not have any form of limiting or expiry, which means that it could grow very large and cause an OutOfMemoryError if a large number of distinct qualifier are used. Usually the number of qualifiers is finite (and relatively small), but this is not true if an application uses AnnotationLiteral-derived classes with arbitrary data in the annoation. An example of where this occurs is Solder's ServletEventBridgeListener, which emits events with a qualifier annotation containing the URL path and method. The cache should have some form of limit or expiry, so that it does not grow arbitrarily large.
Jozef Hartinger <jharting@redhat.com> updated the status of jira WELD-1323 to Resolved
Fixed upstream via https://source.jboss.org/viewrep/WeldCore/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java?r1=ab2975d93a6f8137db557e94e33d91ea74372382&r2=23c4dd19f1f633258047ad11b5a7dfc97acf4c43
Should this be moved to ON_QA?
If this was fixed in some release of Weld that's in the EAP 6.x branch, please move it to ON_QA, setting the Target Release to EAP 6.2.0 and the Target Milestone to ER6. If you know the # of the first ER that had the fix in the build, then use that, but if you don't know then ER6 is fine.
Verified on EAP 6.2.0.ER6