Deprecated Garbage Collection
This page refers to an old Garbage Collection implementation known to not scale on big repositories. Above a certain number of documents/binaries, this implementation fails in timeout or OutOfMemory errors.
Please refer to the new implementation.
The binary files attached to documents are not stored in the database but using a specialized binary store (typically filesystem-based or S3), and are not removed like documents (see Trash Service).
Binary files are not immediately deleted when their containing document is deleted because the binary store uses a de-duplication strategy which means that the same binary file may be referenced by several documents. To avoid complex locking or reference counting strategies, they are simply garbage-collected when there remains no reference to them (they are orphaned).
Usage with the Nuxeo Shell or Java Code
import org.nuxeo.ecm.core.blob.DocumentBlobManager;
import org.nuxeo.ecm.core.blob.binary.BinaryManagerStatus;
DocumentBlobManager docBlobManager = Framework.getService(DocumentBlobManager.class);
if (!docBlobManager.isBinariesGarbageCollectionInProgress()) {
BinaryManagerStatus binaryManagerStatus = docBlobManager.garbageCollectBinaries(true);
println("Orphaned binaries garbage collecting result: " + binaryManagerStatus);
} else {
println("Orphaned binaries garbage collecting is already in progress.");
}
Related Documentation
- Deleting Content (User documentation)
- Trash Service
- HOWTO: Use Trash Feature
Nuxeo Studio Community Cookbook