Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-40690

One of files fails with SdkClientException: Couldn't initialize a SAX driver to create an XMLReader

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • s3-plugin
    • None
    • jenkins 2.19.4, S3 Publisher Plugin 0.10.11

      It is run from jenkinsfile

          step([$class: 'S3BucketPublisher',
                consoleLogLevel: 'INFO',
                dontWaitForConcurrentBuildCompletion: true,
                entries: [[
                                  bucket: 'mybucket',
                                  excludedFile: '',
                                  flatten: false,
                                  gzipFiles: true,
                                  keepForever: false,
                                  managedArtifacts: true,
                                  noUploadOnFailure: false,
                                  selectedRegion: 'eu-central-1',
                                  showDirectlyInBrowser: false,
                                  sourceFile: 'artifacts/**/*.*',
                                  storageClass: 'STANDARD',
                                  uploadFromSlave: false,
                                  useServerSideEncryption: false]],
                pluginFailureResultConstraint: 'FAILURE',
                profileName: 'jenkins',
                userMetadata: []])
      

      Some files are uploaded sucessfuly to s3 bucket, but then it keep failing on one of the files. with the following error

      Jenkins console output

      ERROR: Failed to upload files
      com.amazonaws.SdkClientException: Couldn't initialize a SAX driver to create an XMLReader
      at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.<init>(XmlResponsesSaxParser.java:113)
      at com.amazonaws.services.s3.model.transform.Unmarshallers$InitiateMultipartUploadResultUnmarshaller.unmarshall(Unmarshallers.java:237)
      at com.amazonaws.services.s3.model.transform.Unmarshallers$InitiateMultipartUploadResultUnmarshaller.unmarshall(Unmarshallers.java:234)
      at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:62)
      at com.amazonaws.services.s3.internal.ResponseHeaderHandlerChain.handle(ResponseHeaderHandlerChain.java:44)
      at com.amazonaws.services.s3.internal.ResponseHeaderHandlerChain.handle(ResponseHeaderHandlerChain.java:30)
      at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:70)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1444)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1151)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:964)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:676)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:650)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:633)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$300(AmazonHttpClient.java:601)
      at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:583)
      at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:447)
      at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4137)
      at com.amazonaws.services.s3.AmazonS3Client.initiateMultipartUpload(AmazonS3Client.java:2988)
      at com.amazonaws.services.s3.transfer.internal.UploadCallable.initiateMultipartUpload(UploadCallable.java:362)
      at com.amazonaws.services.s3.transfer.internal.UploadCallable.uploadInParts(UploadCallable.java:180)
      at com.amazonaws.services.s3.transfer.internal.UploadCallable.call(UploadCallable.java:123)
      at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:139)
      at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:47)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
      Caused by: org.xml.sax.SAXException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
      java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
      at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:230)
      at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory.java:191)
      at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.<init>(XmlResponsesSaxParser.java:111)
      ... 26 more
      Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
      at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:450)
      at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403)
      at org.xml.sax.helpers.NewInstance.newInstance(NewInstance.java:82)
      at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:228)
      ... 28 more

      Seems like the original exception is not known as it was hidden in the s3 client code as per this article

      The only thing that is different in the failing file is that its size is 75519KB. Other files are much smaller.

          [JENKINS-40690] One of files fails with SdkClientException: Couldn't initialize a SAX driver to create an XMLReader

          Kamil P added a comment -

          There is an interesting observation in JENKINS-19725 about the 16M size limit.

          Kamil P added a comment - There is an interesting observation in JENKINS-19725 about the 16M size limit.

          Sjoerd van Gestel added a comment - - edited

          We experience this issue with files bigger than 14Mb, if you add xerces-2.9.0.jar to the s3 plugin lib folder it should be solved (/var/lib/jenkins/plugins/s3/WEB-INF/lib/)

          Sjoerd van Gestel added a comment - - edited We experience this issue with files bigger than 14Mb, if you add xerces-2.9.0.jar to the s3 plugin lib folder it should be solved (/var/lib/jenkins/plugins/s3/WEB-INF/lib/)

          Ian Mortimer added a comment -

          I have the xerces-2.9.0.jar in the /var/lib/jenkins/plugins/s3/WEB-INF/lib/ and I still get this error. Any update? 

          Ian Mortimer added a comment - I have the xerces-2.9.0.jar in the /var/lib/jenkins/plugins/s3/WEB-INF/lib/ and I still get this error. Any update? 

          Richard Otter added a comment -

          I found that I needed to restart Jenkins to get the  xerces-2.9.0.jar workaround to function. 

          I am now uploading 400MB files.

          Richard Otter added a comment - I found that I needed to restart Jenkins to get the  xerces-2.9.0.jar workaround to function.  I am now uploading 400MB files.

            jimilian Alexander A
            kampak1111 Kamil P
            Votes:
            2 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: