Morten Bøgeskov created KAFKA-19839:
---------------------------------------

             Summary: Native-image (dockerimage) does not work with 
compression.type=zstd
                 Key: KAFKA-19839
                 URL: https://issues.apache.org/jira/browse/KAFKA-19839
             Project: Kafka
          Issue Type: Bug
          Components: docker
    Affects Versions: 4.1.1
         Environment: Docker image: apache/kafka-native:4.1.1-rc2
JavaClient: org.apache.kafka:kafka-clients:4.1.0

            Reporter: Morten Bøgeskov


When sending records to a topic created like this:

{quote}
            admin.createTopics(List.of(new NewTopic("foo", 24, (short) 1)
                    
.configs(Map.of(TopicConfig.COMPRESSION_TYPE_CONFIG,"zstd"))));
{quote}

With a producer configured with:

{quote}
        producerProps.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "zstd");
{quote}

The server fails with:

{quote}
[TIMESTAMP] ERROR [ReplicaManager broker=1] Error processing append operation 
on partition Z6OCnSwIS9KVFCN2gLaxnQ:foo-1 (kafka.server.ReplicaManager)
java.lang.NoSuchFieldError: 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.dstPos
        at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getFieldID(JNIFunctions.java:1357)
 ~[?:?]
        at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetFieldID(JNIFunctions.java:449)
 ~[?:?]
        at 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.resetCStream(Native Method) 
~[?:?]
        at 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.close(ZstdOutputStreamNoFinalizer.java:423)
 ~[?:?]
        at 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.close(ZstdOutputStreamNoFinalizer.java:405)
 ~[?:?]
...
        at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211)
 [kafka.Kafka:?]
        Suppressed: java.lang.NoSuchFieldError: 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.dstPos
                at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getFieldID(JNIFunctions.java:1357)
 ~[?:?]
                at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetFieldID(JNIFunctions.java:449)
 ~[?:?]
                at 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.resetCStream(Native Method) 
~[?:?]
...
                at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211)
 [kafka.Kafka:?]
        Suppressed: java.lang.NoSuchFieldError: 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.dstPos
                at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getFieldID(JNIFunctions.java:1357)
 ~[?:?]
                at 
org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetFieldID(JNIFunctions.java:449)
 ~[?:?]
                at 
com.github.luben.zstd.ZstdOutputStreamNoFinalizer.resetCStream(Native Method) 
~[?:?]
{quote}

The file: {{docker/native/native-image-configs/jni-config.json}} seems to have 
it referred:

{quote}
{
  "name":"com.github.luben.zstd.ZstdInputStreamNoFinalizer",
  "fields":[{"name":"dstPos"}, {"name":"srcPos"}]
},
{quote}






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

Reply via email to