Package org.nuxeo.ecm.core.blob
Class AbstractBlobGarbageCollector
- java.lang.Object
-
- org.nuxeo.ecm.core.blob.AbstractBlobGarbageCollector
-
- All Implemented Interfaces:
BinaryGarbageCollector
- Direct Known Subclasses:
InMemoryBlobStore.InMemoryBlobGarbageCollector
,S3BlobStore.S3BlobGarbageCollector
public abstract class AbstractBlobGarbageCollector extends Object implements BinaryGarbageCollector
Basic implementation for a garbage collector recording marked blobs in memory.
-
-
Constructor Summary
Constructors Constructor Description AbstractBlobGarbageCollector()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BinaryManagerStatus
getStatus()
Gets the status of the binaries to GC and of those that won't be.Set<String>
getUnmarkedBlobsAndUpdateStatus()
boolean
isInProgress()
Checks if a GC is in progress.void
mark(String digest)
Marks a binary as being in use.void
removeBlobs(Set<String> keys)
void
removeUnmarkedBlobsAndUpdateStatus(boolean delete)
void
start()
Starts the garbage collection process.void
stop(boolean delete)
Stops the garbage collection process and deletes all binaries that have not been marked (sweep).-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.nuxeo.ecm.core.blob.binary.BinaryGarbageCollector
getId
-
-
-
-
Constructor Detail
-
AbstractBlobGarbageCollector
public AbstractBlobGarbageCollector()
-
-
Method Detail
-
isInProgress
public boolean isInProgress()
Description copied from interface:BinaryGarbageCollector
Checks if a GC is in progress.A GC is in progress is
#start
has been called but not#stop
.It's only useful to call this from a separate thread from the one that calls
BinaryGarbageCollector.mark(java.lang.String)
.- Specified by:
isInProgress
in interfaceBinaryGarbageCollector
- Returns:
true
if a GC is in progress
-
start
public void start()
Description copied from interface:BinaryGarbageCollector
Starts the garbage collection process.After this, all active binaries must be fed to the
BinaryGarbageCollector.mark(java.lang.String)
method.- Specified by:
start
in interfaceBinaryGarbageCollector
-
stop
public void stop(boolean delete)
Description copied from interface:BinaryGarbageCollector
Stops the garbage collection process and deletes all binaries that have not been marked (sweep).- Specified by:
stop
in interfaceBinaryGarbageCollector
- Parameters:
delete
-true
if actual deletion must be performed,false
if the binaries to delete should simply be counted in the status
-
removeUnmarkedBlobsAndUpdateStatus
public void removeUnmarkedBlobsAndUpdateStatus(boolean delete)
-
getUnmarkedBlobsAndUpdateStatus
public Set<String> getUnmarkedBlobsAndUpdateStatus()
-
removeBlobs
public void removeBlobs(Set<String> keys)
-
mark
public void mark(String digest)
Description copied from interface:BinaryGarbageCollector
Marks a binary as being in use.- Specified by:
mark
in interfaceBinaryGarbageCollector
- Parameters:
digest
- the binary's digest
-
getStatus
public BinaryManagerStatus getStatus()
Description copied from interface:BinaryGarbageCollector
Gets the status of the binaries to GC and of those that won't be.Available after
BinaryGarbageCollector.stop(boolean)
.- Specified by:
getStatus
in interfaceBinaryGarbageCollector
- Returns:
- the status
-
-