Troubleshooting File Transfers When Using Automatic Binding
Problem
A download of a file to an EMS that is configured to use automatic binding fails, with the following error messages:
EMS Error Message During File Transfer
This failure can also occur if you download an SCM package from the ThingWorx Platform to the EMS.
In addition, the ThingWorx Platform logs show a Gateway Timeout error
2019-04-16 14:04:08.235-0400 [L: ERROR] [O: E.c.t.s.s.f.e.FileCopyTask] [I: ]
[U: Administrator] [S: ] [T: FileTransfer-3]
[context: Error occurred during transfer.: service execution failure
resultCode=STATUS_GATEWAY_TIMEOUT:
job=TransferJob [tid: 205bbb83-63c9-4e5f-8f4f-05f654cdc360, sourceRepo: FileTransferThing,
sourcePath: \In\Welcab6.jpg, targetRepo: Repo2, targetPath: \new\Welcab6.jpg,
partPath: \new\Welcab6.jpg.Repo2.part, sourceChecksum: , targetChecksum: ,
state: ACTIVE, code: 202,
message: Transfer request accepted, isAsync: false, isRestartEnabled: true,
isComplete: false, bytesTransferred: 0, blockcount: 0, blocksize: 8192, size: 1089448,
maxsize: 100000000, transferTime: 0, transferControl: platform, reservationId: ,
isQueueable: false, enqueueTime: 0, enqueueCount: 0, metadata: null,
Job [id: 205bbb83-63c9-4e5f-8f4f-05f654cdc360, lastTouch: 1555437847173, timeout: 30000,
TimedLock [createTime: 1555437847148, signalTime: 0, duration: 0, signaled: false]]]]
2019-04-16 14:04:08.241-0400 [L: ERROR] [O: E.c.t.s.s.f.e.FileCopyTask] [I: ] [U: ]
[S: ] [T: FileTransfer-3] [context: Error occurred during transfer.]
Recommended Workaround
To perform a file transfer using EMS, you can but do not need to have an LSR running. However, you do need a bound Thing. In versions 8.3.5 and 8.4.x of the ThingWorx Platform, a service was introduced, called GetSupportedChecksumAlgorithms. This service breaks previously working EMS configurations that use auto_bind for identity but do not specify a host and port. The workaround for this change is to make sure that your auto_bind configuration specifies the host and port used by the http_server configuration. This workaround resolves both file transfer and tunneling errors that occur when auto_bind does not specify a host and port.
| It is not recommended to use an auto_bind configuration without specifying a host and port. The auto_bind configuration should be u sed to bind an existing HTTP server on your LAN as a Remote Thing. Using auto_bind just to define a Thing and have it show up in ThingWorx Composer without running an LSR can cause problems when the platform sends requests to the Edge Thing and there is nothing to which the EMS can route the request. |
For information about file transfers between Edge SDKs and ThingWorx Platform, refer to
File Transfers.