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

 

 

 

 

Reply via email to