I recently upgraded our application from v8.6.3 to v10, and advanced to Java 21, and I immediately got both build and runtime errors and warnings about vector incubators etc.
The warnings when I built the Lucene index suggested that I add "--add-modules jdk.incubator.vector" to the java commandline. Our application doesn't use any vector data types and so far as I know it doesn't do any vector type comparisons either. Nevertheless I added this to the commandline and I got a different message on execution: [date & time] org.apache.lucene.internal.vectorization.PanamaVectorizationProvider <init> INFO: Java vector incubator API enabled: uses preferredBitSize=512; FMA enabled This goes to stderr, and I'd prefer to suppress it somehow. The Lucene doco suggested that I could disable the FMA vector extension by using the commandline option "-Dlucene.useVectorFMA=false" but this just generated a different series of messages to the error log. So far this is a trivial complaint that I wouldn't raise because the indexes are not built at a high frequency and these unnecessary message lines don't do any damage. However the application which performs the searches is also generating error output. If I include the --add-modules jdk.incubator.vector parameters, every search request adds the lines WARNING: Using incubator modules: jdk.incubator.vector [date & time] org.apache.lucene.internal.vectorization.PanamaVectorizationProvider <init> INFO: Java vector incubator API enabled; uses preferredBitSize=256; FMA enabled to the error channel. Now this is a problem because the error file grows like Topsy and any real errors in it are apt to get missed. I don't really need to be told every time that I'm using vectorization (although I'm not!) because I explicitly put it on the commandline. I only expect to see a warning if something is wrong. So that's the first question; is there some magical incantation that will allow Lucene to think it's using vectorization and still keep the error log clean? The second question is one that probably reveals profound ignorance. The option I was prompted to add to the application commandline refers to a jdk module. I'm building and testing this on a machine with the full JDK but it will be deployed to machines that currently only have the JRE. Do I need the JDK installed everywhere? cheers T
