Table of Contents
The Reliable Transfer Service (RFT) is a WSRF based service that
provides interfaces for controlling and monitoring third party file
transfers using GridFTP servers. The client controlling the transfers
(in this case RFT) is hosted inside of a Grid service so it can
be managed using the soft state model. It is essentially a reliable and
recoverable version of the GT2 globus-url-copy
tool and more. In GT 4.0 RFT can also perform file deletion and recursive directory deletion operations. It is also used by GRAM to perform all the staging
operations and cleanup operations.
The RFT service implementation in GT 4.0 uses standard SOAP messages over HTTP to submit and manage a set of 3rd party GridFTP transfers and to delete files using GridFTP. The user creates an RFT resource by submitting a list of URL pairs of files that need to be transferred/deleted to the RFT Factory service. The user also specifies the time to live for the resource the user is creating to the GT 4.0 Container in which RFT is deployed and configured. The resource is created after the user is properly authorized and authenticated. RFT service implementation exposes operations to control and manages the transfers (the resource). The operations exposed by both the RFT factory and the RFT service are briefly described below. The resource the user created also exposes the state of the transfer as a resource property to which the user can either subscribe for changes or poll for the changes in state periodically using standard command line clients.
Please find below operations of both RFT Factory and RFT Service Implementation.
Used to create a Reliable File Transfer resource. The operations exposed by the factory are as follows:
createReliableFileTransfer
: Creates a Reliable File Transfer resource.- Input Parameters: Initial Termination time, Transfer Request or Delete Request.
- Output parameters: Termination time, Current time, Endpoint reference of the Resource created. This should be stored by the user, as it is needed to query the status of the resource and to perform any further operations on the resource.
- Fault: createReliableFileTransferFault.
Used to manage the Resource created using the RFT Factory Service. The operations exposed by the service are as follows:
start:
Starts executing the transfers/deletes.- Input Parameters: None
- Output Parameters: None
- Fault: RepeatedlyStartedFault
getStatus:
To get the status of a particular file.- Input Parameters: A source URL of the file that is part of the request.
- Output Parameters:
Transfer Status Type
- Fault: RFTDatabaseFault
getStatusSet
: To get the status of a set of files in a request.- Input Parameters: int from (the relative position of the transfer in the request) and int offset (the number of files queried).
- Output Parameters: An array of
TransferStatusType
. - Fault: RFTDatabaseFault
cancel: To cancel a transfer that is part of a resource.
- Input Parameters: int from (the relative position of the transfer in the request) and int to.
- Output Parameters: None
- Fault: RFTDatabaseFault
The resource properties of RFT Factory (which acts both as a resource and a service at the same time) and RFT Resource are found below:
ActiveResourceInstances
: A dynamic resource property of the total number of active RFT resources in the container at a given point of time.TotalNumberOfTransfers
: A dynamic resource property of the total number of transfers/deletes performed since the RFT service was deployed in this container.TotalNumberOfActiveTransfers
: A dynamic resource property of the number of active transfers across all rft resources in a container at a given point of time.TotalNumberOfBytesTransferred
: A dynamic resource property of the total number of bytes transferred by all RFT resources created since the deployment of the service.RFTFactoryStartTime
: Time when the service was deployed in the container. Used to calculate uptime.DelegationServiceEPR
: The end point reference of the Delegation resource that holds the delegated credential used in executing the resource.
OverallStatus
: This is a complex type providing the overall status of an RFT resource by providing the number of transfers pending, active, finished, retrying, failed, and cancelled. Each of these values can be obtained by invoking getTransfers(Finished/Active/Failed/Restarted/Pending/Cancelled) on OverallStatus Resource Property. Note that this Resource Property gets updated every time one of the transfers changes state, so there can be and will be more than one update in the life time of a RFT resource if you subscribe to this RP. This Resource Property also includes the last fault (if thrown) from a transfer and can be accessed by invoking getFault on OverallStatus. This will indicate why a transfer has failed.RequestStatus
: This is a complex type resource property providing the status of an RFT resource in the form of Pending/Active/Done/Failed. The status can be obtained from RequestStatusType by invoking getRequestStatus(). This will result in one of four status strings (Pending/Active/Done/Failed/Cancelled). This RP also contains a fault that denotes the last fault in a RFT resource and can be accessed by invoking getFault(). If a client is subscribed to this RP, there will be only be 2 updates in the life time of an RFT resource (Pending->Active->Done, Pending->Active->Failed, Pending->Active->Cancelled, and Pending->Cancelled).TotalBytes
: This provides the total number of bytes transferred by the resource.TotalTime
: This provides the total time taken to transfer the above-mentioned total bytes.
Faults from the RFT Factory Service and RFT Service can be found below:
createReliableFileTransferFault
: All the errors encountered during the creation of the RFT resource are mapped to this fault. Any security related errors are caught before the factory and are thrown to the user/client.
You can find links to all the RFT schemas here.
Please see the RFT Command Reference.
Please go here to view the entire RFT transfer request schema documentation.
These options are set in the transferRequest and deleteRequest elements and apply similarly for each.
concurrency
This denotes number of files in the request that needs to be transferred at one time.
maxAttempts
Maximum number of attempts after transient errors to execute the transfer or deletion before giving up and raising an error.
finishBy
(Not Implemented) In future versions of RFT this will be used to enforce time constraints on a transfer.
These options are set in the
rftOptions
element
(see
RFTOptionsType
for more details)
and are specific
to file transfers. They can be specified as defaults for all transfers
under the
transferRequest
element,
and/or individually under each transfer
element
(see
TransferType
for more details):
<transferRequest> <transfer>...</transfer> <rftOptions> <-- option elements here --> </rftOptions> </transferRequest>
AND/OR
<transferRequest> <transfer> ... <sourceUrl> <destinationUrl> ... <rftOptions> <-- option elements here --> </rftOptions> </transfer> </transferRequest>
binary
Transfer as a binary file. Default is "true".
blockSize
Specifies the size of the data blocks to use in the transfer.
tcpBufferSize
Specifies the TCP buffer size used for the transfer.
notpt
If set to "true", third-party transfer mode will not be use. Instead, a client thread will be started that will GET data from the source server and and PUT data to the destination server. Default is "false".
parallelStreams
Specifies the number of parallel streams to use during the transfer. Default is 1.
dcau
Specifies whether or not to use data channel authentication. Default is true.
subjectName
Specifies the credential subject to use for authenticating both the source and destination servers.
destinationSubjectName
Specifies the credential subject to use for authenticating the destination server.
sourceSubjectName
Specifies the credential subject to use for authenticating the source server.
userName
Specifies the username to be used to perform the transfer which sometimes may not be the same as transfer requester.
These options are set in the
deleteOptions
element
(see
DeleteOptionsType
for more details),
and are specific to file deletions. They can be specified as defaults for
all deletions under the
deleteRequest
element, and/or individually under each
deletion
element
(see
DeleteType
for more details):
<deleteRequest> <deletion>...</deletion> <deleteOptions> <-- option elements here --> </deleteOptions> </deleteRequest>
AND/OR
<deleteRequest> <deletion> ... <file> <deleteOptions> <-- option elements here --> </deleteOptions> </deletion> </deleteRequest>
subjectName
Specifies the credential subject to use for authenticating the target server.
userName
Specifies the username to be used to perform the deletion.
Please see the Configuring RFT.