[ 
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)

Reply via email to