Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-13299

Solr 8 RC2 does not start on Windows with SSL/TLS enabled on Java 8

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 8.0
    • 8.0, 9.0
    • Server
    • Windows 10

    Description

      When trying to start the Solr 8 release candidate with Java 8 having SSL/TLS enabled, the Windows solr.cmd startup script fails with ALPN not found while complainig about the ALPN JAR file which only works with Java 9+:

      Waiting up to 30 to see Solr running on port 8983
      java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at org.eclipse.jetty.start.Main.invokeMain(Main.java:220)
              at org.eclipse.jetty.start.Main.start(Main.java:490)
              at org.eclipse.jetty.start.Main.main(Main.java:77)
      Caused by: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
              at java.security.AccessController.doPrivileged(Native Method)
              at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1511)
              ... 7 more
      Caused by: java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
              at org.eclipse.jetty.util.TypeUtil.construct(TypeUtil.java:663)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:858)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1309)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1214)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newArray(XmlConfiguration.java:936)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1313)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1214)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:842)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1309)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1214)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.access$500(XmlConfiguration.java:326)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration$AttrOrElementNode.getList(XmlConfiguration.java:1442)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration$AttrOrElementNode.getList(XmlConfiguration.java:1417)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:780)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:472)
              at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:413)
              at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:311)
              at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1558)
              at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1512)
              ... 9 more
      Caused by: java.lang.IllegalStateException: No Server ALPNProcessors!
              at org.eclipse.jetty.alpn.server.ALPNServerConnectionFactory.<init>(ALPNServerConnectionFactory.java:53)
             ... 32 more
              Suppressed: java.lang.UnsupportedClassVersionError: org/eclipse/jetty/alpn/java/server/JDK9ServerALPNProcessor has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
                      at java.lang.ClassLoader.defineClass1(Native Method)
                      at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
                      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
                      at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
                      at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
                      at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
                      at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
                      at java.security.AccessController.doPrivileged(Native Method)
                      at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
                      at java.lang.Class.forName0(Native Method)
                      at java.lang.Class.forName(Class.java:348)
                      at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
                      at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
                      at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
                      at org.eclipse.jetty.alpn.server.ALPNServerConnectionFactory.<init>(ALPNServerConnectionFactory.java:60)
                      ... 32 more
      

      Passing “-Dsolr.http1=true” did not help. So it’s impossible to start TLS-enabled Solr with Java 8.

      The Linux startup script chooses the Jetty module "https8" instead of "https" when started with Java 8. This effectively disables HTTP2 with TLS. The same should happen on the Windows startup script.

      The patch is easy, it's just an IF statement missing.

      Attachments

        1. SOLR-13299.patch
          1 kB
          Uwe Schindler

        Issue Links

          Activity

            People

              uschindler Uwe Schindler
              uschindler Uwe Schindler
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: