[
https://issues.apache.org/jira/browse/FLINK-35724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Junrui Lee closed FLINK-35724.
------------------------------
Fix Version/s: 2.0.0
2.0.1
Resolution: Done
master 225ef6a2a060bff13530d699d20fb8d5f1f8b7e4
release-2.0 254a712de44fd9529c4d507bbea1b74b3106eefa
> javax.xml.bind.JAXBException not found with jdk11 while writing to oss
> ----------------------------------------------------------------------
>
> Key: FLINK-35724
> URL: https://issues.apache.org/jira/browse/FLINK-35724
> Project: Flink
> Issue Type: Bug
> Components: Connectors / FileSystem
> Affects Versions: 1.19.1
> Environment: flink version: 1.19
> jdk version: 11
> current oss provided by aliyun
> with wrong access secret key to reproduce this exception
> Reporter: zhi.wang
> Assignee: Junrui Lee
> Priority: Critical
> Labels: pull-request-available
> Fix For: 2.0.0, 2.0.1
>
>
> writing data to oss with jdk11 will throw an exception of
> `java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException`
> —
> bug conditions:
> * jdk11: using this image with docker.io/library/flink:1.19-java11 which
> contains jdk11
> * enable plugin flink-s3-fs-hadoop-1.19.*.jar
> * there's an error in oss connections, for example, access secret key error
> —
> exceptions caught in taskmanager:
> {quote}2024-06-28 19:07:01,577 WARN
> org.apache.flink.runtime.taskmanager.Task [] - Source:
> data-generator-source -> Map -> Sink: Writer -> Sink: Committer (2/2)#6
> (2d837c57492b8c19ea522293b149d7b9_cbc357ccb763df2852fee8c4fc7d55f2_1_6)
> switched from RUNNING to FAILED with failure cause:
> java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
> at
> com.aliyun.oss.internal.OSSErrorResponseHandler.handle(OSSErrorResponseHandler.java:69)
> ~[?:?]
> at
> com.aliyun.oss.common.comm.ServiceClient.handleResponse(ServiceClient.java:259)
> ~[?:?]
> at
> com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:142)
> ~[?:?]
> at
> com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:71)
> ~[?:?]
> at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:86)
> ~[?:?]
> at
> com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:148) ~[?:?]
> at
> com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:105) ~[?:?]
> at
> com.aliyun.oss.internal.OSSMultipartOperation.initiateMultipartUpload(OSSMultipartOperation.java:249)
> ~[?:?]
> at
> com.aliyun.oss.OSSClient.initiateMultipartUpload(OSSClient.java:866) ~[?:?]
> at
> org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystemStore.getUploadId(AliyunOSSFileSystemStore.java:699)
> ~[?:?]
> at
> org.apache.flink.fs.osshadoop.OSSAccessor.startMultipartUpload(OSSAccessor.java:61)
> ~[?:?]
> at
> org.apache.flink.fs.osshadoop.writer.OSSRecoverableMultipartUpload.<init>(OSSRecoverableMultipartUpload.java:81)
> ~[?:?]
> at
> org.apache.flink.fs.osshadoop.writer.OSSRecoverableWriter.open(OSSRecoverableWriter.java:73)
> ~[?:?]
> at
> org.apache.flink.streaming.api.functions.sink.filesystem.OutputStreamBasedPartFileWriter$OutputStreamBasedBucketWriter.openNewInProgressFile(OutputStreamBasedPartFileWriter.java:124)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.api.functions.sink.filesystem.BulkBucketWriter.openNewInProgressFile(BulkBucketWriter.java:36)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.connector.file.sink.writer.FileWriterBucket.rollPartFile(FileWriterBucket.java:261)
> ~[flink-connector-files-1.19.0.jar:1.19.0]
> at
> org.apache.flink.connector.file.sink.writer.FileWriterBucket.write(FileWriterBucket.java:188)
> ~[flink-connector-files-1.19.0.jar:1.19.0]
> at
> org.apache.flink.connector.file.sink.writer.FileWriter.write(FileWriter.java:198)
> ~[flink-connector-files-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.operators.sink.SinkWriterOperator.processElement(SinkWriterOperator.java:160)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:75)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:50)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:29)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.api.operators.StreamMap.processElement(StreamMap.java:38)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:75)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:50)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:29)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.SourceOperatorStreamTask$AsyncDataOutputToOutput.emitRecord(SourceOperatorStreamTask.java:310)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.api.operators.source.SourceOutputWithWatermarks.collect(SourceOutputWithWatermarks.java:110)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.api.operators.source.SourceOutputWithWatermarks.collect(SourceOutputWithWatermarks.java:101)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.api.connector.source.lib.util.IteratorSourceReaderBase.pollNext(IteratorSourceReaderBase.java:111)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.api.connector.source.util.ratelimit.RateLimitedSourceReader.pollNext(RateLimitedSourceReader.java:69)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.api.operators.SourceOperator.emitNext(SourceOperator.java:421)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.io.StreamTaskSourceInput.emitNext(StreamTaskSourceInput.java:68)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:579)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:231)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:909)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:858)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:937)
> [flink-dist-1.19.0.jar:1.19.0]
> at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:751)
> [flink-dist-1.19.0.jar:1.19.0]
> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566)
> [flink-dist-1.19.0.jar:1.19.0]
> at java.lang.Thread.run(Unknown Source) [?:?]
> Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
> at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
> at
> org.apache.flink.core.classloading.ComponentClassLoader.loadClassFromComponentOnly(ComponentClassLoader.java:150)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at
> org.apache.flink.core.classloading.ComponentClassLoader.loadClass(ComponentClassLoader.java:113)
> ~[flink-dist-1.19.0.jar:1.19.0]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
> ... 43 more
> {quote}
> —
> bug found:
> * [The JAXB APIs completely removed from the JDK
> 11]([https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception)]
> * when error occurs while connecting to oss, OSSErrorResponseHandler will be
> accessed and then the exception will be thrown
> —
> how to fix:
> * oss sdk has already "Remove the parser of JAXBResponseParser" with this
> commit
> [https://github.com/aliyun/aliyun-oss-java-sdk/commit/c7b567c40c3a31b9b08092f5a49b567eaf0f854b]
> * therefore, just upgrade oss sdk version(the latest version is 3.17.4)
> —
> TODOs:
> * I have fixed and tested locally(with 1.19)
> * but I am confusing about the content of file
> `flink-filesystems/flink-oss-fs-hadoop/src/main/resources/META-INF/NOTICE`
> ** can it be generated automatically?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)