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

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 8.0
    • Fix Version/s: 8.0, master (9.0)
    • Component/s: Server
    • Labels:
    • Environment:

      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

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

                Dates

                • Created:
                  Updated:
                  Resolved: