[ 
https://issues.apache.org/jira/browse/KAFKA-17227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17870128#comment-17870128
 ] 

Rob Young commented on KAFKA-17227:
-----------------------------------

Here's a reproducer using podman:

{code:java}
podman run -it --tmpfs /tmp:rw,size=787448k,mode=1777,noexec apache/kafka:3.8.0 
/bin/bash
7ef5b101f96b:/$ cd /opt/kafka/
7ef5b101f96b:/opt/kafka$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
7ef5b101f96b:/opt/kafka$ bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c 
config/kraft/server.properties
Exception in thread "main" java.lang.UnsatisfiedLinkError: 
/tmp/libzstd-jni-1.5.6-35934137328938107222.so: Error loading shared library 
/tmp/libzstd-jni-1.5.6-35934137328938107222.so: Operation not permitted
no zstd-jni-1.5.6-3 in java.library.path: 
/opt/java/openjdk/lib/server:/opt/java/openjdk/lib:/opt/java/openjdk/../lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
Unsupported OS/arch, cannot find /linux/amd64/libzstd-jni-1.5.6-3.so or load 
zstd-jni-1.5.6-3 from system libraries. Please try building from source the jar 
or providing libzstd-jni-1.5.6-3 in your system.
        at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.base/java.lang.System.loadLibrary(Unknown Source)
        at com.github.luben.zstd.util.Native$1.run(Native.java:70)
        at com.github.luben.zstd.util.Native$1.run(Native.java:68)
        at java.base/java.security.AccessController.doPrivileged(Unknown Source)
        at com.github.luben.zstd.util.Native.loadLibrary(Native.java:68)
        at com.github.luben.zstd.util.Native.load(Native.java:155)
        at com.github.luben.zstd.util.Native.load(Native.java:86)
        at com.github.luben.zstd.Zstd.<clinit>(Zstd.java:12)
        at 
org.apache.kafka.common.compress.ZstdCompression.<clinit>(ZstdCompression.java:41)
        at 
org.apache.kafka.storage.internals.log.LogConfig.<clinit>(LogConfig.java:251)
        at kafka.server.KafkaConfig$.<clinit>(KafkaConfig.scala:308)
        at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:546)
        at kafka.tools.StorageTool$.$anonfun$execute$1(StorageTool.scala:72)
        at scala.Option.flatMap(Option.scala:283)
        at kafka.tools.StorageTool$.execute(StorageTool.scala:72)
        at kafka.tools.StorageTool$.main(StorageTool.scala:53)
        at kafka.tools.StorageTool.main(StorageTool.scala)
{code}

I can see in the next version of zstd-jni 1.5.6-4 there is a commit that looks 
like it makes the dir used [configurable by system 
prop|https://github.com/luben/zstd-jni/commit/c057b94e0372be2e16e957e5e09b4fe3c84e8c22]

> Apache Kafka 3.8.0 /tmp exec permission
> ---------------------------------------
>
>                 Key: KAFKA-17227
>                 URL: https://issues.apache.org/jira/browse/KAFKA-17227
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 3.8.0
>            Reporter: Francisco Martinez
>            Priority: Major
>         Attachments: kafka_issue.png
>
>
> I have just downloaded and installed new Apache Kafka version 3.8.0.
> It does not work for me (version 3.7.1 works fine).
> In SLES 15 SP5, i have configured /etc/fstab to do not have exec permission 
> for the /tmp partition (noexec) (as suggested by the CIS benchmark).
> Then the Kafka service does not start. Even the kafka-storage.sh script 
> cannot be executed to create the Kafka storage in /tmp/kraft-combined-logs.
> The error reported (in all cases) is exception 
> java.lang.UnsatisfiedLinkError: /tmp/lib/libzstd-jni-1.5.6-3.....so: failed 
> to map segment from shared object. The error does not appear if i enable 
> again the exec permission in /tmp (i.e. mount -o remount,exec /tmp).
> It seems that the zstd-jni-1.5.6-3.jar library is tried to be loaded (even in 
> the case the compression is disabled by default in producer.properties: 
> compression.type=none). Inside the jar file there is for example 
> lizstd-jni-1.5.6-3.so for amd64 architecture that is used by the jar, and for 
> that purpose it is copied to /tmp. But if the /tmp does not have execution 
> permissions, the Apache Kafka processes don't start.
> Maybe the issue is in zstd-jni and has to be solved in zstd-jni, or maybe the 
> library could be imported only when necessary (only in case the compression 
> is used) to minimize the issue with zstd-jni.
> Thanks and regards.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to