voldemort.server.storage
Class DataMaintenanceJob
java.lang.Object
voldemort.server.storage.DataMaintenanceJob
- All Implemented Interfaces:
- java.lang.Runnable
- Direct Known Subclasses:
- RepairJob, SlopPurgeJob, VersionedPutPruneJob
public abstract class DataMaintenanceJob
- extends java.lang.Object
- implements java.lang.Runnable
Base class for jobs that do some maintenance on the data stored in the server
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
BLACKLISTED_STORAGE_TYPES
public static final java.util.List<java.lang.String> BLACKLISTED_STORAGE_TYPES
STAT_RECORDS_INTERVAL
protected static final int STAT_RECORDS_INTERVAL
- See Also:
- Constant Field Values
scanPermits
protected final ScanPermitWrapper scanPermits
storeRepo
protected final StoreRepository storeRepo
metadataStore
protected final MetadataStore metadataStore
iterator
protected ClosableIterator<ByteArray> iterator
numKeysScannedThisRun
protected java.util.concurrent.atomic.AtomicLong numKeysScannedThisRun
numKeysUpdatedThisRun
protected java.util.concurrent.atomic.AtomicLong numKeysUpdatedThisRun
totalKeysScanned
protected long totalKeysScanned
totalKeysUpdated
protected long totalKeysUpdated
isRunning
protected java.util.concurrent.atomic.AtomicBoolean isRunning
throttler
protected final EventThrottler throttler
DataMaintenanceJob
public DataMaintenanceJob(StoreRepository storeRepo,
MetadataStore metadataStore,
ScanPermitWrapper scanPermits,
int maxRatePerSecond)
DataMaintenanceJob
public DataMaintenanceJob(StoreRepository storeRepo,
MetadataStore metadataStore,
ScanPermitWrapper scanPermits)
run
public void run()
- Specified by:
run
in interface java.lang.Runnable
operate
public abstract void operate()
throws java.lang.Exception
- Throws:
java.lang.Exception
getLogger
protected abstract org.apache.log4j.Logger getLogger()
getJobName
protected abstract java.lang.String getJobName()
isWritableStore
protected boolean isWritableStore(StoreDefinition storeDef)
closeIterator
protected void closeIterator(ClosableIterator<ByteArray> iterator)
getIsRunning
public java.util.concurrent.atomic.AtomicBoolean getIsRunning()
- Determines whether this job is already runnning.. Note that this only
protects against scheduling the same job twice by mistake from Admin tool
(most practical use case)
Note: There can still be a race when two threads find this value to be
false and both attempt to execute the job
- Returns:
getKeysScanned
public long getKeysScanned()
resetStats
protected void resetStats()
Jay Kreps, Roshan Sumbaly, Alex Feinberg, Bhupesh Bansal, Lei Gao, Chinmay Soman, Vinoth Chandar, Zhongjie Wu