co.cask.tephra.hbase94.coprocessor
Class TransactionProcessor
java.lang.Object
org.apache.hadoop.hbase.coprocessor.BaseRegionObserver
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:
- applies filtering to exclude data from invalid and in-progress transactions
- overrides the scanner returned for flush and compaction to drop data written by invalidated transactions,
or expired due to TTL.
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 classes/interfaces inherited from interface org.apache.hadoop.hbase.Coprocessor |
org.apache.hadoop.hbase.Coprocessor.State |
| Fields inherited from interface org.apache.hadoop.hbase.Coprocessor |
PRIORITY_HIGHEST, PRIORITY_LOWEST, PRIORITY_SYSTEM, PRIORITY_USER, VERSION |
|
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 |
ttlByFamily
protected Map<byte[],Long> ttlByFamily
allowEmptyValues
protected boolean allowEmptyValues
TransactionProcessor
public TransactionProcessor()
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.