public class MultiThreadDatasetCache extends DynamicDatasetCache
DynamicDatasetCache that performs all operations on a per-thread basis.
That is, every thread is guaranteed to receive its own distinct copy of every dataset; every thread
has its own transaction context, etc.DynamicDatasetCache.DatasetCacheKeyinstantiator, metricsContext, namespace, runtimeArguments, txClient| Constructor and Description |
|---|
MultiThreadDatasetCache(SystemDatasetInstantiator instantiator,
co.cask.tephra.TransactionSystemClient txClient,
NamespaceId namespace,
Map<String,String> runtimeArguments,
MetricsContext metricsContext,
Map<String,Map<String,String>> staticDatasets)
See
DynamicDatasetCache. |
| Modifier and Type | Method and Description |
|---|---|
void |
addExtraTransactionAware(co.cask.tephra.TransactionAware txAware)
Add an extra transaction aware to the static datasets.
|
void |
close()
Close and dismiss all datasets that were obtained through this factory, and destroy the factory.
|
void |
discardDataset(co.cask.cdap.api.dataset.Dataset dataset) |
void |
dismissTransactionContext()
Dismiss the current transaction context.
|
Collection<Thread> |
getCacheKeys() |
<T extends co.cask.cdap.api.dataset.Dataset> |
getDataset(DynamicDatasetCache.DatasetCacheKey key,
boolean bypass)
To be implemented by subclasses.
|
Iterable<co.cask.tephra.TransactionAware> |
getStaticTransactionAwares() |
Iterable<co.cask.tephra.TransactionAware> |
getTransactionAwares() |
void |
invalidate()
Close and dismiss all datasets that were obtained through this factory.
|
co.cask.tephra.TransactionContext |
newTransactionContext()
Return a new transaction context for the current thread.
|
void |
removeExtraTransactionAware(co.cask.tephra.TransactionAware txAware)
Remove a transaction-aware that was added via
DynamicDatasetCache.addExtraTransactionAware(TransactionAware). |
get, getDataset, getDataset, getDataset, releaseDatasetpublic MultiThreadDatasetCache(SystemDatasetInstantiator instantiator, co.cask.tephra.TransactionSystemClient txClient, NamespaceId namespace, Map<String,String> runtimeArguments, @Nullable MetricsContext metricsContext, @Nullable Map<String,Map<String,String>> staticDatasets)
DynamicDatasetCache.staticDatasets - if non-null, a map from dataset name to runtime arguments. These datasets will be
instantiated immediately, and they will participate in every transaction started
through newTransactionContext().public void invalidate()
DynamicDatasetCacheinvalidate in class DynamicDatasetCachepublic void close()
DynamicDatasetCacheclose in class DynamicDatasetCachepublic <T extends co.cask.cdap.api.dataset.Dataset> T getDataset(DynamicDatasetCache.DatasetCacheKey key, boolean bypass) throws co.cask.cdap.api.data.DatasetInstantiationException
DynamicDatasetCachegetDataset in class DynamicDatasetCachebypass - if true, bypass the dataset cache, and do not add this to the transaction.co.cask.cdap.api.data.DatasetInstantiationExceptionpublic void discardDataset(co.cask.cdap.api.dataset.Dataset dataset)
public co.cask.tephra.TransactionContext newTransactionContext()
DynamicDatasetCacheDynamicDatasetCache.getTransactionAwares().newTransactionContext in class DynamicDatasetCachepublic void dismissTransactionContext()
DynamicDatasetCacheDynamicDatasetCache.newTransactionContext()).dismissTransactionContext in class DynamicDatasetCachepublic Iterable<co.cask.tephra.TransactionAware> getStaticTransactionAwares()
getStaticTransactionAwares in class DynamicDatasetCacheDynamicDatasetCache.newTransactionContext().public Iterable<co.cask.tephra.TransactionAware> getTransactionAwares()
getTransactionAwares in class DynamicDatasetCacheDynamicDatasetCache.newTransactionContext() has not been called (or DynamicDatasetCache.dismissTransactionContext() has been
called), then there is no transaction and this will return an empty iterable.public void addExtraTransactionAware(co.cask.tephra.TransactionAware txAware)
DynamicDatasetCacheaddExtraTransactionAware in class DynamicDatasetCachepublic void removeExtraTransactionAware(co.cask.tephra.TransactionAware txAware)
DynamicDatasetCacheDynamicDatasetCache.addExtraTransactionAware(TransactionAware).
Note that if a transaction is in progress, then this transaction aware will leave that transaction.removeExtraTransactionAware in class DynamicDatasetCachepublic Collection<Thread> getCacheKeys()
Copyright © 2016 Cask Data, Inc. Licensed under the Apache License, Version 2.0.