Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-17975

DNS_PING loads its initial context factory from TCCL during channel creation.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • 32.0.0.Final
    • 28.0.0.Final
    • Clustering
    • None
    • ---
    • ---

    Description

      This can cause an CNFE if the a channel using this protocol is loaded from an unexpected classloader.
      e.g.

      05:42:49,509 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 65) MSC000001: Failed to start service org.wildfly.clustering.jgroups.channel.ee: org.jboss.msc.service.StartException in service org.wildfly.clustering.jgroups.channel.ee: java.lang.IllegalStateException: javax.naming.NamingException: WFLYNAM0027: Failed instantiate InitialContextFactory com.sun.jndi.dns.DnsContextFactory from classloader ModuleClassLoader for Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base)) [Root exception is java.lang.ClassNotFoundException: com.sun.jndi.dns.DnsContextFactory from [Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base))]]
      	at org.wildfly.clustering.service@29.0.0.Alpha1-SNAPSHOT//org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:66)
      	at org.wildfly.clustering.service@29.0.0.Alpha1-SNAPSHOT//org.wildfly.clustering.service.AsyncServiceConfigurator$AsyncService.lambda$start$0(AsyncServiceConfigurator.java:117)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
      	at java.base/java.lang.Thread.run(Thread.java:829)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
      Caused by: java.lang.IllegalStateException: javax.naming.NamingException: WFLYNAM0027: Failed instantiate InitialContextFactory com.sun.jndi.dns.DnsContextFactory from classloader ModuleClassLoader for Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base)) [Root exception is java.lang.ClassNotFoundException: com.sun.jndi.dns.DnsContextFactory from [Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base))]]
      	at org.jboss.as.clustering.jgroups@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.clustering.jgroups.subsystem.ChannelServiceConfigurator.get(ChannelServiceConfigurator.java:122)
      	at org.jboss.as.clustering.jgroups@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.clustering.jgroups.subsystem.ChannelServiceConfigurator.get(ChannelServiceConfigurator.java:60)
      	at org.wildfly.clustering.service@29.0.0.Alpha1-SNAPSHOT//org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:63)
      	... 7 more
      Caused by: javax.naming.NamingException: WFLYNAM0027: Failed instantiate InitialContextFactory com.sun.jndi.dns.DnsContextFactory from classloader ModuleClassLoader for Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base)) [Root exception is java.lang.ClassNotFoundException: com.sun.jndi.dns.DnsContextFactory from [Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base))]]
      	at org.jboss.as.naming@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:120)
      	at org.jboss.as.naming@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.naming.InitialContext.init(InitialContext.java:101)
      	at java.naming/javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
      	at org.jboss.as.naming@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.naming.InitialContext.<init>(InitialContext.java:91)
      	at org.jboss.as.naming@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.naming.InitialContextFactory.getInitialContext(InitialContextFactory.java:43)
      	at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
      	at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
      	at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
      	at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
      	at java.naming/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
      	at org.jgroups@5.2.14.Final//org.jgroups.protocols.dns.DefaultDNSResolver.<init>(DefaultDNSResolver.java:42)
      	at org.jgroups@5.2.14.Final//org.jgroups.protocols.dns.DNS_PING.init(DNS_PING.java:58)
      	at org.jgroups@5.2.14.Final//org.jgroups.stack.ProtocolStack.initProtocolStack(ProtocolStack.java:794)
      	at org.jgroups@5.2.14.Final//org.jgroups.stack.ProtocolStack.initProtocolStack(ProtocolStack.java:781)
      	at org.jgroups@5.2.14.Final//org.jgroups.stack.ProtocolStack.init(ProtocolStack.java:777)
      	at org.jgroups@5.2.14.Final//org.jgroups.JChannel.<init>(JChannel.java:155)
      	at org.jboss.as.clustering.jgroups@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.clustering.jgroups.JChannelFactory.createChannel(JChannelFactory.java:118)
      	at org.jboss.as.clustering.jgroups@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.clustering.jgroups.subsystem.ChannelServiceConfigurator.get(ChannelServiceConfigurator.java:98)
      	... 9 more
      Caused by: java.lang.ClassNotFoundException: com.sun.jndi.dns.DnsContextFactory from [Module "org.wildfly.clustering.service" version 29.0.0.Alpha1-SNAPSHOT from local module loader @528c868 (finder: local module finder @466276d8 (roots: /opt/server/modules,/opt/server/modules/system/layers/base))]
      	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:200)
      	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
      	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
      	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
      	at java.base/java.lang.Class.forName0(Native Method)
      	at java.base/java.lang.Class.forName(Class.java:398)
      	at org.jboss.as.naming@29.0.0.Alpha1-SNAPSHOT//org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:115)
      	... 26 more
      

      To properly fix this, WF should override the DNSResolver used by DNS_PING such that the InitialContextFactory is loaded from a predictable module.

      Attachments

        Issue Links

          Activity

            People

              pferraro@redhat.com Paul Ferraro
              pferraro@redhat.com Paul Ferraro
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: