Garbage Collect Document's Blobs
DELETE /management/blobs/orphaned
Garbage collect all the orphaned document's blobs (which are not referenced by any documents anymore). Available since 2021.38.
Query Parameters
| Parameter Name | Type | Description | Notes |
|---|---|---|---|
| dryRun | boolean | Do not effectively delete blobs | Optional, default is false |
| queryLimit | long | Limit the number of blob to be GC | Optional, default is unlimited |
| records | boolean | Also GC records provider | Optional, default is false |
Response
If successful, returns a bulk status entity representing the bulk action status of the garbage collection bulk action.
The garbage collection can be monitored using the Bulk Endpoint.
Status Codes
- 200 OK - Success.
- 409 Conflict - A garbage collect is already in progress.
- 501 OK - Not implemented.
This garbage collection is only implemented on instances working with:
- repositories having the
ecm:blobKeyscapability (introduced by https://jira.nuxeo.com/browse/NXP-29516) i.e. MongoDB - blob providers extending BlobStoreBlobProvider such as S3BlobProvider and LocalBlobProvider
Sample
Invoke GC:
curl -X DELETE -u Administrator:Administrator \
http://localhost:8080/nuxeo/api/v1/management/blobs/orphaned
{
"entity-type": "bulkStatus",
"commandId": "09361005-59a9-4f00-9ff1-78de52988eb5",
"state": "SCHEDULED",
"processed": 0,
"skipCount": 0,
"error": false,
"errorCount": 0,
"total": 0,
"action": "garbageCollectOrphanBlobs",
"username": "system",
"submitted": "2023-05-15T16:24:00.863Z",
"scrollStart": null,
"scrollEnd": null,
"processingStart": null,
"processingEnd": null,
"completed": null,
"processingMillis": 0
}
Then monitor the GC with:
curl -u Administrator:Administrator \
http://localhost:8080/nuxeo/api/v1/management/bulk/09361005-59a9-4f00-9ff1-78de52988eb5
{
"entity-type": "bulkStatus",
"commandId": "09361005-59a9-4f00-9ff1-78de52988eb5",
"state": "COMPLETED",
"processed": 79,
"skipCount": 78,
"error": false,
"errorCount": 0,
"total": 79,
"action": "garbageCollectOrphanBlobs",
"username": "system",
"submitted": "2023-05-15T16:54:50.345Z",
"scrollStart": "2023-05-15T16:54:50.431Z",
"scrollEnd": "2023-05-15T16:54:50.675Z",
"processingStart": "2023-05-15T16:54:50.702Z",
"processingEnd": "2023-05-15T16:54:50.805Z",
"completed": "2023-05-15T16:54:50.843Z",
"processingMillis": 103,
"result": {
"totalSize": 8942206,
"deletedSize": 11210,
"dryRun": false
}
}
where:
processedis the total count of scrolled blobs from the blob provider(s) of the repositoryskipCountis the total count of blobs that were not GC (because still referenced in the repository)processed-skipCountis the total count of blobs that were garbage collected i.e. detected as orphaned (here 79-78 = 1 blob)result.totalSizeis the sum of the size of all the scrolled blob from the blob provider(s) of the repository in bytes (here ~8 MB)result.deletedSizeis the sum of the size of the blobs that were garbage collected in bytes (here ~10 KB)dryRunwhether the blobs were effectively deletedLearn More