[ https://issues.apache.org/jira/browse/KAFKA-17227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17870289#comment-17870289 ]
Rob Young commented on KAFKA-17227: ----------------------------------- I was interested if the same was true for snappy which also packs native libs, and can see the same type of exception when I try to produce with snappy compression with a noexec temp dir. After starting up the broker using Josep's commands above and then podman execing into the container in another terminal: ``` 227f03903dac:/opt/kafka$ export KAFKA_OPTS="-DZstdTempFolder=/opt/kafka/tmp" 227f03903dac:/opt/kafka$ ./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic 1 --compression-codec snappy >a [2024-08-01 21:10:15,638] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 6 : {1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) org.apache.kafka.common.KafkaException: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.10-1d07d4d6-2cb1-4b26-bc59-7c965a70bfde-libsnappyjava.so: Error loading shared library /tmp/snappy-1.1.10-1d07d4d6-2cb1-4b26-bc59-7c965a70bfde-libsnappyjava.so: Operation not permitted ``` xerial snappy also supports [a system prop|https://github.com/xerial/snappy-java/blob/bad35791e13ccff89dc47896ea809138c42d5d7d/src/main/java/org/xerial/snappy/SnappyLoader.java#L67] for overriding the temp dir `-Dorg.xerial.snappy.tempdir=/opt/kafka/tmp` After restarting the broker with that system prop set, and then running the console producer with that system prop set, the produce succeeded. > 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 > Assignee: Josep Prat > 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)