co.cask.tephra.hbase94.coprocessor
Class TransactionProcessor

java.lang.Object
  extended by org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
      extended by co.cask.tephra.hbase94.coprocessor.TransactionProcessor
All Implemented Interfaces:
org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver

public class TransactionProcessor
extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver

org.apache.hadoop.hbase.coprocessor.RegionObserver coprocessor that handles server-side processing for transactions:

In order to use this coprocessor for transactions, configure the class on any table involved in transactions, or on all user tables by adding the following to hbase-site.xml: <property> <name>hbase.coprocessor.region.classes</name> <value>co.cask.tephra.hbase94.coprocessor.TransactionProcessor</value> </property>

HBase Get and Scan operations should have the current transaction serialized on to the operation as an attribute: Transaction t = ...; Get get = new Get(...); TransactionCodec codec = new TransactionCodec(); codec.addToOperation(get, t);


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.hadoop.hbase.Coprocessor
org.apache.hadoop.hbase.Coprocessor.State
 
Field Summary
protected  boolean allowEmptyValues
           
protected  Map<byte[],Long> ttlByFamily
           
 
Fields inherited from interface org.apache.hadoop.hbase.Coprocessor
PRIORITY_HIGHEST, PRIORITY_LOWEST, PRIORITY_SYSTEM, PRIORITY_USER, VERSION
 
Constructor Summary
TransactionProcessor()
           
 
Method Summary
protected  org.apache.hadoop.hbase.regionserver.InternalScanner createStoreScanner(org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment env, String action, TransactionSnapshot snapshot, org.apache.hadoop.hbase.regionserver.Store store, List<? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners, org.apache.hadoop.hbase.regionserver.ScanType type, long earliestPutTs)
           
protected  org.apache.hadoop.hbase.filter.Filter getTransactionFilter(Transaction tx)
          Derived classes can override this method to customize the filter used to return data visible for the current transaction.
protected  com.google.common.base.Supplier<TransactionStateCache> getTransactionStateCacheSupplier(org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment env)
           
 org.apache.hadoop.hbase.regionserver.InternalScanner preCompactScannerOpen(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> c, org.apache.hadoop.hbase.regionserver.Store store, List<? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners, org.apache.hadoop.hbase.regionserver.ScanType scanType, long earliestPutTs, org.apache.hadoop.hbase.regionserver.InternalScanner s, org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest request)
           
 org.apache.hadoop.hbase.regionserver.InternalScanner preFlushScannerOpen(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> c, org.apache.hadoop.hbase.regionserver.Store store, org.apache.hadoop.hbase.regionserver.KeyValueScanner memstoreScanner, org.apache.hadoop.hbase.regionserver.InternalScanner s)
           
 void preGet(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e, org.apache.hadoop.hbase.client.Get get, List<org.apache.hadoop.hbase.KeyValue> results)
           
 org.apache.hadoop.hbase.regionserver.RegionScanner preScannerOpen(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e, org.apache.hadoop.hbase.client.Scan scan, org.apache.hadoop.hbase.regionserver.RegionScanner s)
           
 void start(org.apache.hadoop.hbase.CoprocessorEnvironment e)
           
 void stop(org.apache.hadoop.hbase.CoprocessorEnvironment e)
           
 
Methods inherited from class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
postAppend, postBatchMutate, postBulkLoadHFile, postCheckAndDelete, postCheckAndPut, postClose, postCompact, postCompact, postCompactSelection, postCompactSelection, postDelete, postExists, postFlush, postFlush, postGet, postGetClosestRowBefore, postIncrement, postIncrementColumnValue, postLockRow, postOpen, postPut, postScannerClose, postScannerFilterRow, postScannerNext, postScannerOpen, postSplit, postUnlockRow, postWALRestore, preAppend, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndPut, preClose, preCompact, preCompact, preCompactScannerOpen, preCompactSelection, preCompactSelection, preDelete, preExists, preFlush, preFlush, preGetClosestRowBefore, preIncrement, preIncrementColumnValue, preLockRow, preOpen, prePut, preScannerClose, preScannerNext, preSplit, preStoreScannerOpen, preUnlockRow, preWALRestore
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ttlByFamily

protected Map<byte[],Long> ttlByFamily

allowEmptyValues

protected boolean allowEmptyValues
Constructor Detail

TransactionProcessor

public TransactionProcessor()
Method Detail

start

public void start(org.apache.hadoop.hbase.CoprocessorEnvironment e)
           throws IOException
Specified by:
start in interface org.apache.hadoop.hbase.Coprocessor
Overrides:
start in class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
Throws:
IOException

getTransactionStateCacheSupplier

protected com.google.common.base.Supplier<TransactionStateCache> getTransactionStateCacheSupplier(org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment env)

stop

public void stop(org.apache.hadoop.hbase.CoprocessorEnvironment e)
          throws IOException
Specified by:
stop in interface org.apache.hadoop.hbase.Coprocessor
Overrides:
stop in class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
Throws:
IOException

preGet

public void preGet(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e,
                   org.apache.hadoop.hbase.client.Get get,
                   List<org.apache.hadoop.hbase.KeyValue> results)
            throws IOException
Specified by:
preGet in interface org.apache.hadoop.hbase.coprocessor.RegionObserver
Overrides:
preGet in class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
Throws:
IOException

preScannerOpen

public org.apache.hadoop.hbase.regionserver.RegionScanner preScannerOpen(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> e,
                                                                         org.apache.hadoop.hbase.client.Scan scan,
                                                                         org.apache.hadoop.hbase.regionserver.RegionScanner s)
                                                                  throws IOException
Specified by:
preScannerOpen in interface org.apache.hadoop.hbase.coprocessor.RegionObserver
Overrides:
preScannerOpen in class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
Throws:
IOException

preFlushScannerOpen

public org.apache.hadoop.hbase.regionserver.InternalScanner preFlushScannerOpen(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> c,
                                                                                org.apache.hadoop.hbase.regionserver.Store store,
                                                                                org.apache.hadoop.hbase.regionserver.KeyValueScanner memstoreScanner,
                                                                                org.apache.hadoop.hbase.regionserver.InternalScanner s)
                                                                         throws IOException
Specified by:
preFlushScannerOpen in interface org.apache.hadoop.hbase.coprocessor.RegionObserver
Overrides:
preFlushScannerOpen in class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
Throws:
IOException

preCompactScannerOpen

public org.apache.hadoop.hbase.regionserver.InternalScanner preCompactScannerOpen(org.apache.hadoop.hbase.coprocessor.ObserverContext<org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment> c,
                                                                                  org.apache.hadoop.hbase.regionserver.Store store,
                                                                                  List<? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners,
                                                                                  org.apache.hadoop.hbase.regionserver.ScanType scanType,
                                                                                  long earliestPutTs,
                                                                                  org.apache.hadoop.hbase.regionserver.InternalScanner s,
                                                                                  org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest request)
                                                                           throws IOException
Specified by:
preCompactScannerOpen in interface org.apache.hadoop.hbase.coprocessor.RegionObserver
Overrides:
preCompactScannerOpen in class org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
Throws:
IOException

createStoreScanner

protected org.apache.hadoop.hbase.regionserver.InternalScanner createStoreScanner(org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment env,
                                                                                  String action,
                                                                                  TransactionSnapshot snapshot,
                                                                                  org.apache.hadoop.hbase.regionserver.Store store,
                                                                                  List<? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners,
                                                                                  org.apache.hadoop.hbase.regionserver.ScanType type,
                                                                                  long earliestPutTs)
                                                                           throws IOException
Throws:
IOException

getTransactionFilter

protected org.apache.hadoop.hbase.filter.Filter getTransactionFilter(Transaction tx)
Derived classes can override this method to customize the filter used to return data visible for the current transaction.

Parameters:
tx - The current transaction to apply.


Copyright © 2014. All Rights Reserved.