Discover v201008: Remove incomplete BulkMutateJobs
November 8th, 2010 | Published in Google Adwords API
The v201008 release of the AdWords API added a new feature to the BulkMutateJobService: the ability to remove incomplete jobs. This allows you to clean out your job queue after an application crash or other failure. In this post we’ll demonstrate how to use the feature and discuss some of its limitations.
When a
Jobs that are incomplete and those that are complete but waiting in the queue behind a processing job will both have a
In v201008 the
After being removed, the job will be in the
A limitation of the
Code examples that show how to delete jobs are included in all of the client libraries. If you have any questions about this functionality or the BulkMutateJobService, ask us on the forum.
- Eric Koleda, AdWords API Team
When a
BulkMutateJob
is created the field numRequestParts
is set, which determines how many BulkMutateRequest
objects will be added to the job. Once the final request part has been added, the job enters into the account’s job queue, and when it reaches the front of the queue it begins processing. If the application crashes while the parts are being uploaded, the job will never start and remain stranded in the account.Jobs that are incomplete and those that are complete but waiting in the queue behind a processing job will both have a
PENDING
status. An account can only have 10 pending jobs at a time, so stranded jobs can begin to fill up the account, until eventually no new jobs can be added. Prior to v201008 the only way to remove stranded jobs was to add the missing request parts so that the job would start. If the job had been stranded for a while though, the operations that were previously uploaded may make undesired changes to the account.In v201008 the
REMOVE
operator can be used to delete incomplete jobs. The following code does this using the PHP client library.$bulkMutateJobId = (float) 'INSERT_BULK_MUTATE_JOB_ID_HERE';
// Create BulkMutateJob.
$bulkMutateJob = new BulkMutateJob();
$bulkMutateJob->id = $bulkMutateJobId;
// Create operation.
$operation = new JobOperation();
$operation->operand = $bulkMutateJob;
$operation->operator = 'REMOVE';
// Delete bulk mutate job.
$bulkMutateJob = $bulkMutateJobService->mutate($operation);
After being removed, the job will be in the
FAILED
state and the failureReason
field will contain JobError.USER_CANCELED_JOB
.A limitation of the
REMOVE
operator is that it only works on jobs that are in the PENDING
state and that are incomplete (numRequestParts
> numRequestPartsReceived
). Jobs that are complete and have already entered the job queue, whether they be in the PENDING
or PROCESSING
state, cannot be deleted.Code examples that show how to delete jobs are included in all of the client libraries. If you have any questions about this functionality or the BulkMutateJobService, ask us on the forum.
- Eric Koleda, AdWords API Team