Package org.nuxeo.ecm.core.blob
Class LocalBlobStore.LocalBlobGarbageCollector
java.lang.Object
org.nuxeo.ecm.core.blob.LocalBlobStore.LocalBlobGarbageCollector
- All Implemented Interfaces:
BinaryGarbageCollector
- Enclosing class:
- LocalBlobStore
public class LocalBlobStore.LocalBlobGarbageCollector
extends Object
implements BinaryGarbageCollector
-
Field Summary
Modifier and TypeFieldDescriptionboolean
protected long
protected BinaryManagerStatus
static final long
Windows FAT filesystems have a time resolution of 2s. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
computeToDelete
(File file, long minTime) protected void
getId()
Gets a unique identifier for this garbage collector.Gets the status of the binaries to GC and of those that won't be.boolean
Checks if a GC is in progress.void
Marks a binary as being in use.protected 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).protected void
Sets the last modification date to now on a file.
-
Field Details
-
TIME_RESOLUTION
public static final long TIME_RESOLUTIONWindows FAT filesystems have a time resolution of 2s. Other common filesystems have 1s.- See Also:
-
startTime
protected volatile long startTime -
status
-
markInMemory
public volatile boolean markInMemory -
toDelete
-
-
Constructor Details
-
LocalBlobGarbageCollector
public LocalBlobGarbageCollector()
-
-
Method Details
-
getId
Description copied from interface:BinaryGarbageCollector
Gets a unique identifier for this garbage collector. Two garbage collectors that would impact the same files must have the same identifier.- Specified by:
getId
in interfaceBinaryGarbageCollector
- Returns:
- a unique identifier
-
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
-
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
-
computeToDelete
-
mark
Description copied from interface:BinaryGarbageCollector
Marks a binary as being in use.- Specified by:
mark
in interfaceBinaryGarbageCollector
- Parameters:
key
- the binary's digest
-
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
protected void removeUnmarkedBlobsAndUpdateStatus(boolean delete) -
deleteOld
-
touch
Sets the last modification date to now on a file.
-