ECS: ECS-Sync cannot migrate objects reporting SAXParseException during bucket migration

Summary: ECS-Sync cannot migrate all objects in a bucket and report SAXParseException during bucket migration.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

ECS-Sync cannot migrate all objects in a bucket and report SAXParseException during bucket migration. 

If you see the following error while syncing an S3 bucket, there are object keys in the bucket with invalid characters: 

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 135069; An invalid XML character (Unicode: 0x3) was found in the element content of the document.
2025-07-16 02:56:43 ERROR [pool-1512497-thread-1] EcsSync: unexpected exception
javax.ws.rs.WebApplicationException: javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 324854; An invalid XML character (Unicode: 0x1) was found in the element content of the document.]
	at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:113) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:634) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:586) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.object.s3.jersey.S3JerseyClient.executeRequest(S3JerseyClient.java:844) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.object.s3.jersey.S3JerseyClient.listObjects(S3JerseyClient.java:512) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.object.s3.jersey.S3JerseyClient.listMoreObjects(S3JerseyClient.java:520) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.storage.s3.EcsS3Storage$PrefixIterator.lambda$getNextBatch$1(EcsS3Storage.java:1167) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.util.TimingUtil.time(TimingUtil.java:56) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.AbstractPlugin.time(AbstractPlugin.java:79) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.storage.s3.EcsS3Storage.access$500(EcsS3Storage.java:65) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.storage.s3.EcsS3Storage$PrefixIterator.getNextBatch(EcsS3Storage.java:1167) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.storage.s3.EcsS3Storage$PrefixIterator.getNextObject(EcsS3Storage.java:1144) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.storage.s3.EcsS3Storage$PrefixIterator.getNextObject(EcsS3Storage.java:1132) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.util.ReadOnlyIterator.hasNext(ReadOnlyIterator.java:32) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.EcsSync.run(EcsSync.java:291) [ecs-sync-3.5.4.jar:3.5.4]
	at com.emc.ecs.sync.service.SyncJobService$SyncTask.run(SyncJobService.java:299) [ecs-sync-3.5.4.jar:3.5.4]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_392]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_392]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_392]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_392]
	at java.lang.Thread.run(Thread.java:750) [?:1.8.0_392]
Caused by: javax.xml.bind.UnmarshalException
	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335) ~[?:1.8.0_392]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:578) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:264) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229) ~[ecs-sync-3.5.4.jar:3.5.4]
	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:140) ~[?:1.8.0_392]
	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:123) ~[?:1.8.0_392]
	at com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider.readFrom(XMLRootElementProvider.java:115) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111) ~[ecs-sync-3.5.4.jar:3.5.4]
	... 20 more
Caused by: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1) was found in the element content of the document.
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:399) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:326) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1466) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2922) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:601) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:504) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) ~[?:1.8.0_392]
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:642) ~[?:1.8.0_392]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:258) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229) ~[ecs-sync-3.5.4.jar:3.5.4]
	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:140) ~[?:1.8.0_392]
	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:123) ~[?:1.8.0_392]
	at com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider.readFrom(XMLRootElementProvider.java:115) ~[ecs-sync-3.5.4.jar:3.5.4]
	at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111) ~[ecs-sync-3.5.4.jar:3.5.4]
	... 20 more

Cause

This means that while listing the source bucket, an invalid character was encountered and processing could not continue. 

Resolution

To resolve this, you must URL-encode the keys when listing the bucket. This feature is turned on by the following advanced option in the ECS S3 plugin (in the source configuration):

To resolve this, you must URL-encode the keys when listing the bucket. This feature is turned on by the following advanced option in the ECS S3 plugin (in the source configuration):

XML (place within the source <ecsS3Config> block):

    <urlEncodeKeys>true</urlEncodeKeys>

Affected Products

ECS
Article Properties
Article Number: 000350999
Article Type: Solution
Last Modified: 13 Aug 2025
Version:  1
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.