gortiz opened a new pull request, #12131:
URL: https://github.com/apache/pinot/pull/12131

   Tag: bugfix
   
   This is a very simple PR that modifies Pinot to include the standard tag 
`Multi-Release` in the shaded manifest.
   
   This tag is defined in [JEP-238](https://openjdk.org/jeps/238). When 
specified, Java runtime 9 and newer consider the jar as a multi-release jar. 
You can read the JEP to have more context, but the TL;DR is that multi release 
jars may include more than one .class file for each Java class. Each .class can 
be optionally be associated with a given Java version and the JVM will load the 
correct class depending on their version. 
   
   For example, for a given class X, the jar may include a standard X and a 
custom version of X to be used in Java 11. In this case when running with Java 
8, 9 or 10, the standard X will be used but the runtime is Java 11 or higher, 
it will use the Java 11 version.
   
   It is important to note that we do not provide custom classes for any 
runtime, but our dependencies do include them. Given that by default we 
distribute Pinot in a fat-jar, we need to enable Multi-Release in our uber-jar 
to inform Java that it should use the newest classes.
   
   For example, Lucene or Roaring Bitmap provide their own classes and even we 
include them in our uber-jar, Java does not load them right now because the 
Manifest doesn't say so. In the case of Lucene that is a problem because the 
standard org.apache.lucene.store.MemorySegmentIndexInput class doesn't work in 
Java 21.
   
   Instructions:
   1. The PR has to be tagged with at least one of the following labels (*):
      1. `feature`
      2. `bugfix`
      3. `performance`
      4. `ui`
      5. `backward-incompat`
      6. `release-notes` (**)
   2. Remove these instructions before publishing the PR.
    
   (*) Other labels to consider:
   - `testing`
   - `dependencies`
   - `docker`
   - `kubernetes`
   - `observability`
   - `security`
   - `code-style`
   - `extension-point`
   - `refactor`
   - `cleanup`
   
   (**) Use `release-notes` label for scenarios like:
   - New configuration options
   - Deprecation of configurations
   - Signature changes to public methods/interfaces
   - New plugins added or old plugins removed
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to