Avoiding JetClassLoader

16 views
Skip to first unread message

Martin Krc

unread,
Mar 9, 2022, 11:02:13 AM3/9/22
to hazelcast-jet
Hi,

How can we avoid using JetClassLoader? I can see that some of our processors occasionally cause fetching class loader resources which causes unwanted interactions with Hazelcast maps and thread blocking. For example:

java.lang.Exception: Blocking call: jdk.internal.misc.Unsafe#park (hz.OurApplication.jet.cooperative.thread-1)
        at com.cgi.aps.rte.mmbinst.application.BlockHoundConfigurer.lambda$null$2(BlockHoundConfigurer.java:75)
        at reactor.blockhound.BlockHound$Builder.lambda$install$8(BlockHound.java:427)
        at reactor.blockhound.BlockHoundRuntime.checkBlocking(BlockHoundRuntime.java:89)
        at java.base/jdk.internal.misc.Unsafe.park(Unsafe.java)
        at java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:323)
        at com.hazelcast.spi.impl.AbstractInvocationFuture.manageParking(AbstractInvocationFuture.java:693)
        at com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:615)
        at com.hazelcast.map.impl.proxy.MapProxySupport.containsKeyInternal(MapProxySupport.java:721)
        at com.hazelcast.map.impl.proxy.MapProxyImpl.containsKey(MapProxyImpl.java:304)
        at com.hazelcast.jet.impl.deployment.JetClassLoader.findResource(JetClassLoader.java:113)
        at com.hazelcast.jet.impl.deployment.JetClassLoader.findResources(JetClassLoader.java:126)
        at java.base/java.lang.ClassLoader.getResources(ClassLoader.java:1467)
        at java.naming/com.sun.naming.internal.VersionHelper.lambda$getResources$5(VersionHelper.java:248)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.naming/com.sun.naming.internal.VersionHelper.getResources(VersionHelper.java:250)
        at java.naming/com.sun.naming.internal.ResourceManager.getApplicationResources(ResourceManager.java:505)
        at java.naming/com.sun.naming.internal.ResourceManager.getInitialEnvironment(ResourceManager.java:188)
        at java.naming/javax.naming.InitialContext.init(InitialContext.java:232)
        at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
        at java.naming/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
        at io.netty.resolver.dns.DirContextUtils.addNameServers(DirContextUtils.java:49)
        at io.netty.resolver.dns.DefaultDnsServerAddressStreamProvider.<clinit>(DefaultDnsServerAddressStreamProvider.java:53)
        at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.provider(DnsServerAddressStreamProviders.java:140)
        at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.<init>(DnsServerAddressStreamProviders.java:120)
        at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder.<clinit>(DnsServerAddressStreamProviders.java:118)
        at io.netty.resolver.dns.DnsServerAddressStreamProviders.unixDefault(DnsServerAddressStreamProviders.java:107)
        at io.netty.resolver.dns.DnsServerAddressStreamProviders.platformDefault(DnsServerAddressStreamProviders.java:103)
        at io.netty.resolver.dns.DnsNameResolverBuilder.<init>(DnsNameResolverBuilder.java:60)
        at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:479)
        at reactor.netty.tcp.TcpResources.getOrCreateDefaultResolver(TcpResources.java:315)
        at reactor.netty.http.HttpResources.getOrCreateDefaultResolver(HttpResources.java:152)
        at reactor.netty.http.client.HttpClientConfig.defaultAddressResolverGroup(HttpClientConfig.java:382)
        at reactor.netty.transport.ClientTransportConfig.resolverInternal(ClientTransportConfig.java:224)
        at reactor.netty.http.client.HttpClientConfig.resolverInternal(HttpClientConfig.java:436)
        at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.lambda$subscribe$0(HttpClientConnect.java:264)
        at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57)
        at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:77)
        at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46)
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57)
        at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.subscribe(HttpClientConnect.java:271)
        at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
        at reactor.core.publisher.Mono.subscribe(Mono.java:4400)
        at reactor.core.publisher.Mono.subscribeWith(Mono.java:4515)
        at reactor.core.publisher.Mono.toFuture(Mono.java:4920)
        at com.something.OurProcessor.loadData

Martin
Reply all
Reply to author
Forward
0 new messages