voldemort.server.storage
Class DataMaintenanceJob

java.lang.Object
  extended by 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


Field Summary
static java.util.List<java.lang.String> BLACKLISTED_STORAGE_TYPES
           
protected  java.util.concurrent.atomic.AtomicBoolean isRunning
           
protected  ClosableIterator<ByteArray> iterator
           
protected  MetadataStore metadataStore
           
protected  java.util.concurrent.atomic.AtomicLong numKeysScannedThisRun
           
protected  java.util.concurrent.atomic.AtomicLong numKeysUpdatedThisRun
           
protected  ScanPermitWrapper scanPermits
           
protected static int STAT_RECORDS_INTERVAL
           
protected  StoreRepository storeRepo
           
protected  EventThrottler throttler
           
protected  long totalKeysScanned
           
protected  long totalKeysUpdated
           
 
Constructor Summary
DataMaintenanceJob(StoreRepository storeRepo, MetadataStore metadataStore, ScanPermitWrapper scanPermits)
           
DataMaintenanceJob(StoreRepository storeRepo, MetadataStore metadataStore, ScanPermitWrapper scanPermits, int maxRatePerSecond)
           
 
Method Summary
protected  void closeIterator(ClosableIterator<ByteArray> iterator)
           
 java.util.concurrent.atomic.AtomicBoolean getIsRunning()
          Determines whether this job is already runnning..
protected abstract  java.lang.String getJobName()
           
 long getKeysScanned()
           
protected abstract  org.apache.log4j.Logger getLogger()
           
protected  boolean isWritableStore(StoreDefinition storeDef)
           
abstract  void operate()
           
protected  void resetStats()
           
 void run()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Constructor Detail

DataMaintenanceJob

public DataMaintenanceJob(StoreRepository storeRepo,
                          MetadataStore metadataStore,
                          ScanPermitWrapper scanPermits,
                          int maxRatePerSecond)

DataMaintenanceJob

public DataMaintenanceJob(StoreRepository storeRepo,
                          MetadataStore metadataStore,
                          ScanPermitWrapper scanPermits)
Method Detail

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