cancel method
Cancels a transfer.
Use the transferOperations.get method to check if the cancellation
succeeded or if the operation completed despite the cancel
request. When
you cancel an operation, the currently running transfer is interrupted.
For recurring transfer jobs, the next instance of the transfer job will
still run. For example, if your job is configured to run every day at 1pm
and you cancel Monday's operation at 1:05pm, Monday's transfer will stop.
However, a transfer job will still be attempted on Tuesday. This applies
only to currently running operations. If an operation is not currently
running, cancel
does nothing. Caution: Canceling a transfer job can
leave your data in an unknown state. We recommend that you restore the
state at both the destination and the source after the cancel
request
completes so that your data is in a consistent state. When you cancel a
job, the next job computes a delta of files and may repair any
inconsistent state. For instance, if you run a job every day, and today's
job found 10 new files and transferred five files before you canceled the
job, tomorrow's transfer operation will compute a new delta with the five
files that were not copied today plus any new files discovered tomorrow.
request
- The metadata request object.
Request parameters:
name
- The name of the operation resource to be cancelled.
Value must have pattern ^transferOperations/.*$
.
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a Empty.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<Empty> cancel(
CancelOperationRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':cancel';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Empty.fromJson(response_ as core.Map<core.String, core.dynamic>);
}