I have seen a random failure in the Quarkus test suite where a JDK proxy was not created. It appears that DynamicProxySupport.addProxyClass is called from multiple threads, but is not thread safe. I think com.oracle.svm.reflect.proxy.DynamicProxySupport#proxyCache needs to be changed to a ConcurrentHashMap.
Thank you for reporting, I will merge the fix soon. You are right DynamicProxySupport.proxyCache can be modified concurrently via SubstrateGraphBuilderPlugins.interceptProxyInterfaces().
@cstancu, a general question about GraalVM releases - does this fix (that has landed in master branch) end up in 19.3.x releases or should one specifically request them to be backported to 19.3.x, given that master branch appears to be 20.x?
Yes, looks like we will need this one in 19.3.1 if we want to be able to support JDK 11 with GraalVM in Quarkus.
Thanks for considering it.
Hopefully we'll be able to catch things like this sooner in the near future when we introduce Quarkus master / GraalVM master tests (although this issue showed up even without master).
Yes, this fix will be included in 19.3.1. In general, we automatically backport critical fixes like this one, but you can request a backport if you need it.
Hey @cstancu do you do backports at the last minute or as the upstream fix happen?
It would be great for quarkus to get it as the upstream fix happen so we could test early.
In our case, your jan release will be just a couple of days before the Quarkus 1.2 if things go as planned so not a lot of time to test before the release.
Georgios (Quarkus) is working on a CI job for Quarkus master on GraalVM master for info.
We usually try to do the backports as the fixes happen. @gilles-duboscq when is the 19.3.1 release branch planned?
Gilles told me, trying to make it happen in a week or two.
Most helpful comment
Yes, this fix will be included in 19.3.1. In general, we automatically backport critical fixes like this one, but you can request a backport if you need it.