Houston Putman created KAFKA-19045:
--------------------------------------
Summary: ByteBufferUnmapper should not use the deprecated
sun.misc.Unsafe#invokeCleaner()
Key: KAFKA-19045
URL: https://issues.apache.org/jira/browse/KAFKA-19045
Project: Kafka
Issue Type: Improvement
Components: clients
Reporter: Houston Putman
When using Java 24+ and utilizing Kafka Clients in the Solr cross-dc testing,
we see the following warnings from Java:
{quote}{{WARNING: A terminally deprecated method in sun.misc.Unsafe has been
called}}
{{WARNING: sun.misc.Unsafe::invokeCleaner has been called by
org.apache.kafka.common.utils.ByteBufferUnmapper}}
{{WARNING: Please consider reporting this to the maintainers of class
org.apache.kafka.common.utils.ByteBufferUnmapper}}
{{WARNING: sun.misc.Unsafe::invokeCleaner will be removed in a future release}}
{{{}OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader
classes because bootstrap classpath has been appended{}}}{{{{}}{}}}
{quote}
The [Lucene
{{MMapDirectory}}|https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java]
, that Kafka's ByteBufferUnmapper was based off of, has changed quite a lot
over the last few years, and no longer uses the
"sun.misc.Unsafe#invokeCleaner()" API.
The usage was removed in: [https://github.com/apache/lucene/pull/912]
This was a major task, and Lucene now uses Java APIs that are only available in
preview modules. Therefore it also does a lot of work to build multiple jars,
each for a different version of the JDK (since the preview code might change
between versions). So this would probably be a big task for Kafka to change it
before those new Java APIs are no-longer preview-only. But anyways, the method
is deprecated, so it's good to get the discussion going early.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)