@InterfaceAudience.Private class MetricsRegionServerWrapperImpl extends Object implements MetricsRegionServerWrapper
| Modifier and Type | Class and Description |
|---|---|
class |
MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable
This is the runnable that will be executed on the executor every PERIOD number of seconds
It will take metrics/numbers from all of the regions and use them to compute point in
time metrics.
|
| Constructor and Description |
|---|
MetricsRegionServerWrapperImpl(HRegionServer regionServer) |
| Modifier and Type | Method and Description |
|---|---|
void |
forceRecompute()
Force a re-computation of the metrics.
|
long |
getAverageRegionSize()
Get the average region size to this region server.
|
long |
getAvgStoreFileAge() |
long |
getBlockCacheCount()
Get the number of items in the block cache.
|
long |
getBlockCacheEvictedCount()
Get the number of items evicted from the block cache.
|
long |
getBlockCacheFailedInsertions()
Number of cache insertions that failed.
|
long |
getBlockCacheFreeSize()
Get the size (in bytes) of the block cache that is free.
|
double |
getBlockCacheHitCachingPercent()
Get the percent of requests with the block cache turned on that hit the block cache.
|
long |
getBlockCacheHitCount()
Get the count of hits to the block cache
|
double |
getBlockCacheHitPercent()
Get the percent of all requests that hit the block cache.
|
long |
getBlockCacheMissCount()
Get the count of misses to the block cache.
|
long |
getBlockCachePrimaryEvictedCount()
Get the number of items evicted from primary replica in the block cache.
|
long |
getBlockCachePrimaryHitCount()
Get the count of hits to primary replica in the block cache
|
long |
getBlockCachePrimaryMissCount()
Get the count of misses to primary replica in the block cache.
|
long |
getBlockCacheSize()
Get the total size (in bytes) of the block cache.
|
long |
getBlockedRequestsCount() |
long |
getBloomChunkHitCount() |
long |
getBloomChunkMissCount() |
long |
getCellsCountCompactedFromMob()
Gets the number of cells moved from mob during compaction.
|
long |
getCellsCountCompactedToMob()
Gets the number of cells moved to mob during compaction.
|
long |
getCellsSizeCompactedFromMob()
Gets the total amount of cells moved from mob during compaction, in bytes.
|
long |
getCellsSizeCompactedToMob()
Gets the total amount of cells moved to mob during compaction, in bytes.
|
long |
getCheckAndMutateChecksFailed()
Get the number of CAS operations that failed.
|
long |
getCheckAndMutateChecksPassed()
Get the number of CAS operations that passed.
|
String |
getClusterId()
Get the Cluster ID
|
long |
getCompactedCellsCount()
Get the number of cells processed during minor compactions.
|
long |
getCompactedCellsSize()
Get the total amount of data processed during minor compactions, in bytes.
|
int |
getCompactionQueueSize()
Get the size of the compaction queue
|
String |
getCoprocessors()
Get the co-processors
|
long |
getDataHitCount() |
long |
getDataInMemoryWithoutWAL()
Ammount of data in the memstore but not in the WAL because mutations explicitly had their
WAL turned off.
|
long |
getDataMissCount() |
long |
getDeleteFamilyBloomHitCount() |
long |
getDeleteFamilyBloomMissCount() |
long |
getFileInfoHitCount() |
long |
getFileInfoMissCount() |
long |
getFilteredReadRequestsCount()
Get the number of filtered read requests to regions hosted on this region server.
|
long |
getFlushedCellsCount()
Get the number of cells flushed to disk.
|
long |
getFlushedCellsSize()
Get the total amount of data flushed to disk, in bytes.
|
int |
getFlushQueueSize()
Get the size of the flush queue.
|
long |
getGeneralBloomMetaHitCount() |
long |
getGeneralBloomMetaMissCount() |
long |
getHedgedReadOps() |
long |
getHedgedReadWins() |
long |
getIntermediateIndexHitCount() |
long |
getIntermediateIndexMissCount() |
long |
getL1CacheHitCount()
Hit count of L1 cache.
|
double |
getL1CacheHitRatio()
Hit ratio of L1 cache.
|
long |
getL1CacheMissCount()
Miss count of L1 cache.
|
double |
getL1CacheMissRatio()
Miss ratio of L1 cache.
|
long |
getL2CacheHitCount()
Hit count of L2 cache.
|
double |
getL2CacheHitRatio()
Hit ratio of L2 cache.
|
long |
getL2CacheMissCount()
Miss count of L2 cache.
|
double |
getL2CacheMissRatio()
Miss ratio of L2 cache.
|
int |
getLargeCompactionQueueSize() |
long |
getLeafIndexHitCount() |
long |
getLeafIndexMissCount() |
long |
getMajorCompactedCellsCount()
Get the number of cells processed during major compactions.
|
long |
getMajorCompactedCellsSize()
Get the total amount of data processed during major compactions, in bytes.
|
long |
getMaxStoreFileAge() |
long |
getMemStoreLimit() |
long |
getMemStoreSize()
Get the size of the memstore on this region server.
|
long |
getMetaHitCount() |
long |
getMetaMissCount() |
long |
getMinStoreFileAge() |
long |
getMobFileCacheAccessCount()
Gets the count of accesses to the mob file cache.
|
long |
getMobFileCacheCount()
Gets the count of cached mob files.
|
long |
getMobFileCacheEvictedCount()
Gets the number of items evicted from the mob file cache.
|
double |
getMobFileCacheHitPercent()
Gets the hit percent to the mob file cache.
|
long |
getMobFileCacheMissCount()
Gets the count of misses to the mob file cache.
|
long |
getMobFlushCount()
Gets the number of the flushes in mob-enabled stores.
|
long |
getMobFlushedCellsCount()
Gets the number of mob cells flushed to disk.
|
long |
getMobFlushedCellsSize()
Gets the total amount of mob cells flushed to disk, in bytes.
|
long |
getMobScanCellsCount()
Gets the number of scanned mob cells.
|
long |
getMobScanCellsSize()
Gets the total amount of scanned mob cells, in bytes.
|
long |
getNumMutationsWithoutWAL()
Number of mutations received with WAL explicitly turned off.
|
long |
getNumOnlineRegions()
The number of online regions
|
long |
getNumReferenceFiles() |
long |
getNumStoreFiles()
Get the number of store files hosted on this region server.
|
long |
getNumStores()
Get the number of stores hosted on this region server.
|
long |
getNumWALFiles()
Get the number of WAL files of this region server.
|
long |
getNumWALSlowAppend()
Get the number of WAL files with slow appends for this region server.
|
double |
getPercentFileLocal()
Get the percent of HFiles' that are local.
|
double |
getPercentFileLocalSecondaryRegions()
Get the percent of HFiles' that are local for secondary region replicas.
|
long |
getReadRequestsCount()
Get the number of read requests to regions hosted on this region server.
|
double |
getRequestsPerSecond()
Get the number of requests per second.
|
long |
getRootIndexHitCount() |
long |
getRootIndexMissCount() |
long |
getRpcGetRequestsCount()
Get the number of rpc get requests to this region server.
|
long |
getRpcMultiRequestsCount()
Get the number of rpc multi requests to this region server.
|
long |
getRpcMutateRequestsCount()
Get the number of rpc mutate requests to this region server.
|
long |
getRpcScanRequestsCount()
Get the number of rpc scan requests to this region server.
|
String |
getServerName()
Get ServerName
|
int |
getSmallCompactionQueueSize() |
int |
getSplitQueueSize()
Get the size of the split queue
|
long |
getStartCode()
Get HRegionServer start time
|
long |
getStoreFileIndexSize()
Get the Size (in bytes) of indexes in storefiles on disk.
|
long |
getStoreFileSize()
Get the total size of the store files this region server is serving from.
|
long |
getTotalRequestCount()
Get the total number of requests per second.
|
long |
getTotalRowActionRequestCount() |
long |
getTotalStaticBloomSize()
Get the size (in bytes) of the static bloom filters.
|
long |
getTotalStaticIndexSize()
Get the size (in bytes) of of the static indexes including the roots.
|
long |
getTrailerHitCount() |
long |
getTrailerMissCount() |
long |
getUpdatesBlockedTime()
Get the amount of time that updates were blocked.
|
long |
getWALFileSize()
Get the size of WAL files of this region server.
|
long |
getWriteRequestsCount()
Get the number of write requests to regions hosted on this region server.
|
String |
getZookeeperQuorum()
Get the ZooKeeper Quorum Info
|
private void |
initBlockCache()
It's possible that due to threading the block cache could not be initialized
yet (testing multiple region servers in one jvm).
|
private void |
initMobFileCache()
Initializes the mob file cache.
|
private static final org.slf4j.Logger LOG
private final HRegionServer regionServer
private final MetricsWALSource metricsWALSource
private BlockCache blockCache
private MobFileCache mobFileCache
private volatile long numStores
private volatile long numWALFiles
private volatile long walFileSize
private volatile long numStoreFiles
private volatile long memstoreSize
private volatile long storeFileSize
private volatile long maxStoreFileAge
private volatile long minStoreFileAge
private volatile long avgStoreFileAge
private volatile long numReferenceFiles
private volatile double requestsPerSecond
private volatile long readRequestsCount
private volatile long filteredReadRequestsCount
private volatile long writeRequestsCount
private volatile long checkAndMutateChecksFailed
private volatile long checkAndMutateChecksPassed
private volatile long storefileIndexSize
private volatile long totalStaticIndexSize
private volatile long totalStaticBloomSize
private volatile long numMutationsWithoutWAL
private volatile long dataInMemoryWithoutWAL
private volatile double percentFileLocal
private volatile double percentFileLocalSecondaryRegions
private volatile long flushedCellsCount
private volatile long compactedCellsCount
private volatile long majorCompactedCellsCount
private volatile long flushedCellsSize
private volatile long compactedCellsSize
private volatile long majorCompactedCellsSize
private volatile long cellsCountCompactedToMob
private volatile long cellsCountCompactedFromMob
private volatile long cellsSizeCompactedToMob
private volatile long cellsSizeCompactedFromMob
private volatile long mobFlushCount
private volatile long mobFlushedCellsCount
private volatile long mobFlushedCellsSize
private volatile long mobScanCellsCount
private volatile long mobScanCellsSize
private volatile long mobFileCacheAccessCount
private volatile long mobFileCacheMissCount
private volatile double mobFileCacheHitRatio
private volatile long mobFileCacheEvictedCount
private volatile long mobFileCacheCount
private volatile long blockedRequestsCount
private volatile long averageRegionSize
protected final Map<String,ArrayList<Long>> requestsCountCache
private CacheStats cacheStats
private CacheStats l1Stats
private CacheStats l2Stats
private ScheduledExecutorService executor
private long period
private org.apache.hadoop.hdfs.DFSHedgedReadMetrics dfsHedgedReadMetrics
public MetricsRegionServerWrapperImpl(HRegionServer regionServer)
private void initBlockCache()
private void initMobFileCache()
public String getClusterId()
MetricsRegionServerWrappergetClusterId in interface MetricsRegionServerWrapperpublic long getStartCode()
MetricsRegionServerWrappergetStartCode in interface MetricsRegionServerWrapperpublic String getZookeeperQuorum()
MetricsRegionServerWrappergetZookeeperQuorum in interface MetricsRegionServerWrapperpublic String getCoprocessors()
MetricsRegionServerWrappergetCoprocessors in interface MetricsRegionServerWrapperpublic String getServerName()
MetricsRegionServerWrappergetServerName in interface MetricsRegionServerWrapperpublic long getNumOnlineRegions()
MetricsRegionServerWrappergetNumOnlineRegions in interface MetricsRegionServerWrapperpublic long getTotalRequestCount()
MetricsRegionServerWrappergetTotalRequestCount in interface MetricsRegionServerWrapperpublic long getTotalRowActionRequestCount()
getTotalRowActionRequestCount in interface MetricsRegionServerWrapperpublic int getSplitQueueSize()
MetricsRegionServerWrappergetSplitQueueSize in interface MetricsRegionServerWrapperpublic int getCompactionQueueSize()
MetricsRegionServerWrappergetCompactionQueueSize in interface MetricsRegionServerWrapperpublic int getSmallCompactionQueueSize()
getSmallCompactionQueueSize in interface MetricsRegionServerWrapperpublic int getLargeCompactionQueueSize()
getLargeCompactionQueueSize in interface MetricsRegionServerWrapperpublic int getFlushQueueSize()
MetricsRegionServerWrappergetFlushQueueSize in interface MetricsRegionServerWrapperpublic long getBlockCacheCount()
MetricsRegionServerWrappergetBlockCacheCount in interface MetricsRegionServerWrapperpublic long getMemStoreLimit()
getMemStoreLimit in interface MetricsRegionServerWrapperpublic long getBlockCacheSize()
MetricsRegionServerWrappergetBlockCacheSize in interface MetricsRegionServerWrapperpublic long getBlockCacheFreeSize()
MetricsRegionServerWrappergetBlockCacheFreeSize in interface MetricsRegionServerWrapperpublic long getBlockCacheHitCount()
MetricsRegionServerWrappergetBlockCacheHitCount in interface MetricsRegionServerWrapperpublic long getBlockCachePrimaryHitCount()
MetricsRegionServerWrappergetBlockCachePrimaryHitCount in interface MetricsRegionServerWrapperpublic long getBlockCacheMissCount()
MetricsRegionServerWrappergetBlockCacheMissCount in interface MetricsRegionServerWrapperpublic long getBlockCachePrimaryMissCount()
MetricsRegionServerWrappergetBlockCachePrimaryMissCount in interface MetricsRegionServerWrapperpublic long getBlockCacheEvictedCount()
MetricsRegionServerWrappergetBlockCacheEvictedCount in interface MetricsRegionServerWrapperpublic long getBlockCachePrimaryEvictedCount()
MetricsRegionServerWrappergetBlockCachePrimaryEvictedCount in interface MetricsRegionServerWrapperpublic double getBlockCacheHitPercent()
MetricsRegionServerWrappergetBlockCacheHitPercent in interface MetricsRegionServerWrapperpublic double getBlockCacheHitCachingPercent()
MetricsRegionServerWrappergetBlockCacheHitCachingPercent in interface MetricsRegionServerWrapperpublic long getBlockCacheFailedInsertions()
MetricsRegionServerWrappergetBlockCacheFailedInsertions in interface MetricsRegionServerWrapperpublic long getL1CacheHitCount()
MetricsRegionServerWrappergetL1CacheHitCount in interface MetricsRegionServerWrapperpublic long getL1CacheMissCount()
MetricsRegionServerWrappergetL1CacheMissCount in interface MetricsRegionServerWrapperpublic double getL1CacheHitRatio()
MetricsRegionServerWrappergetL1CacheHitRatio in interface MetricsRegionServerWrapperpublic double getL1CacheMissRatio()
MetricsRegionServerWrappergetL1CacheMissRatio in interface MetricsRegionServerWrapperpublic long getL2CacheHitCount()
MetricsRegionServerWrappergetL2CacheHitCount in interface MetricsRegionServerWrapperpublic long getL2CacheMissCount()
MetricsRegionServerWrappergetL2CacheMissCount in interface MetricsRegionServerWrapperpublic double getL2CacheHitRatio()
MetricsRegionServerWrappergetL2CacheHitRatio in interface MetricsRegionServerWrapperpublic double getL2CacheMissRatio()
MetricsRegionServerWrappergetL2CacheMissRatio in interface MetricsRegionServerWrapperpublic void forceRecompute()
MetricsRegionServerWrapperforceRecompute in interface MetricsRegionServerWrapperpublic long getNumStores()
MetricsRegionServerWrappergetNumStores in interface MetricsRegionServerWrapperpublic long getNumWALFiles()
MetricsRegionServerWrappergetNumWALFiles in interface MetricsRegionServerWrapperpublic long getWALFileSize()
MetricsRegionServerWrappergetWALFileSize in interface MetricsRegionServerWrapperpublic long getNumWALSlowAppend()
MetricsRegionServerWrappergetNumWALSlowAppend in interface MetricsRegionServerWrapperpublic long getNumStoreFiles()
MetricsRegionServerWrappergetNumStoreFiles in interface MetricsRegionServerWrapperpublic long getMaxStoreFileAge()
getMaxStoreFileAge in interface MetricsRegionServerWrapperpublic long getMinStoreFileAge()
getMinStoreFileAge in interface MetricsRegionServerWrapperpublic long getAvgStoreFileAge()
getAvgStoreFileAge in interface MetricsRegionServerWrapperpublic long getNumReferenceFiles()
getNumReferenceFiles in interface MetricsRegionServerWrapperpublic long getMemStoreSize()
MetricsRegionServerWrappergetMemStoreSize in interface MetricsRegionServerWrapperpublic long getStoreFileSize()
MetricsRegionServerWrappergetStoreFileSize in interface MetricsRegionServerWrapperpublic double getRequestsPerSecond()
MetricsRegionServerWrappergetRequestsPerSecond in interface MetricsRegionServerWrapperpublic long getReadRequestsCount()
MetricsRegionServerWrappergetReadRequestsCount in interface MetricsRegionServerWrapperpublic long getFilteredReadRequestsCount()
MetricsRegionServerWrappergetFilteredReadRequestsCount in interface MetricsRegionServerWrapperpublic long getWriteRequestsCount()
MetricsRegionServerWrappergetWriteRequestsCount in interface MetricsRegionServerWrapperpublic long getRpcGetRequestsCount()
MetricsRegionServerWrappergetRpcGetRequestsCount in interface MetricsRegionServerWrapperpublic long getRpcScanRequestsCount()
MetricsRegionServerWrappergetRpcScanRequestsCount in interface MetricsRegionServerWrapperpublic long getRpcMultiRequestsCount()
MetricsRegionServerWrappergetRpcMultiRequestsCount in interface MetricsRegionServerWrapperpublic long getRpcMutateRequestsCount()
MetricsRegionServerWrappergetRpcMutateRequestsCount in interface MetricsRegionServerWrapperpublic long getCheckAndMutateChecksFailed()
MetricsRegionServerWrappergetCheckAndMutateChecksFailed in interface MetricsRegionServerWrapperpublic long getCheckAndMutateChecksPassed()
MetricsRegionServerWrappergetCheckAndMutateChecksPassed in interface MetricsRegionServerWrapperpublic long getStoreFileIndexSize()
MetricsRegionServerWrappergetStoreFileIndexSize in interface MetricsRegionServerWrapperpublic long getTotalStaticIndexSize()
MetricsRegionServerWrappergetTotalStaticIndexSize in interface MetricsRegionServerWrapperpublic long getTotalStaticBloomSize()
MetricsRegionServerWrappergetTotalStaticBloomSize in interface MetricsRegionServerWrapperpublic long getNumMutationsWithoutWAL()
MetricsRegionServerWrappergetNumMutationsWithoutWAL in interface MetricsRegionServerWrapperpublic long getDataInMemoryWithoutWAL()
MetricsRegionServerWrappergetDataInMemoryWithoutWAL in interface MetricsRegionServerWrapperpublic double getPercentFileLocal()
MetricsRegionServerWrappergetPercentFileLocal in interface MetricsRegionServerWrapperpublic double getPercentFileLocalSecondaryRegions()
MetricsRegionServerWrappergetPercentFileLocalSecondaryRegions in interface MetricsRegionServerWrapperpublic long getUpdatesBlockedTime()
MetricsRegionServerWrappergetUpdatesBlockedTime in interface MetricsRegionServerWrapperpublic long getFlushedCellsCount()
MetricsRegionServerWrappergetFlushedCellsCount in interface MetricsRegionServerWrapperpublic long getCompactedCellsCount()
MetricsRegionServerWrappergetCompactedCellsCount in interface MetricsRegionServerWrapperpublic long getMajorCompactedCellsCount()
MetricsRegionServerWrappergetMajorCompactedCellsCount in interface MetricsRegionServerWrapperpublic long getFlushedCellsSize()
MetricsRegionServerWrappergetFlushedCellsSize in interface MetricsRegionServerWrapperpublic long getCompactedCellsSize()
MetricsRegionServerWrappergetCompactedCellsSize in interface MetricsRegionServerWrapperpublic long getMajorCompactedCellsSize()
MetricsRegionServerWrappergetMajorCompactedCellsSize in interface MetricsRegionServerWrapperpublic long getCellsCountCompactedFromMob()
MetricsRegionServerWrappergetCellsCountCompactedFromMob in interface MetricsRegionServerWrapperpublic long getCellsCountCompactedToMob()
MetricsRegionServerWrappergetCellsCountCompactedToMob in interface MetricsRegionServerWrapperpublic long getCellsSizeCompactedFromMob()
MetricsRegionServerWrappergetCellsSizeCompactedFromMob in interface MetricsRegionServerWrapperpublic long getCellsSizeCompactedToMob()
MetricsRegionServerWrappergetCellsSizeCompactedToMob in interface MetricsRegionServerWrapperpublic long getMobFlushCount()
MetricsRegionServerWrappergetMobFlushCount in interface MetricsRegionServerWrapperpublic long getMobFlushedCellsCount()
MetricsRegionServerWrappergetMobFlushedCellsCount in interface MetricsRegionServerWrapperpublic long getMobFlushedCellsSize()
MetricsRegionServerWrappergetMobFlushedCellsSize in interface MetricsRegionServerWrapperpublic long getMobScanCellsCount()
MetricsRegionServerWrappergetMobScanCellsCount in interface MetricsRegionServerWrapperpublic long getMobScanCellsSize()
MetricsRegionServerWrappergetMobScanCellsSize in interface MetricsRegionServerWrapperpublic long getMobFileCacheAccessCount()
MetricsRegionServerWrappergetMobFileCacheAccessCount in interface MetricsRegionServerWrapperpublic long getMobFileCacheMissCount()
MetricsRegionServerWrappergetMobFileCacheMissCount in interface MetricsRegionServerWrapperpublic long getMobFileCacheCount()
MetricsRegionServerWrappergetMobFileCacheCount in interface MetricsRegionServerWrapperpublic long getMobFileCacheEvictedCount()
MetricsRegionServerWrappergetMobFileCacheEvictedCount in interface MetricsRegionServerWrapperpublic double getMobFileCacheHitPercent()
MetricsRegionServerWrappergetMobFileCacheHitPercent in interface MetricsRegionServerWrapperpublic long getHedgedReadOps()
getHedgedReadOps in interface MetricsRegionServerWrapperpublic long getHedgedReadWins()
getHedgedReadWins in interface MetricsRegionServerWrapperpublic long getBlockedRequestsCount()
getBlockedRequestsCount in interface MetricsRegionServerWrapperpublic long getAverageRegionSize()
MetricsRegionServerWrappergetAverageRegionSize in interface MetricsRegionServerWrapperpublic long getDataMissCount()
getDataMissCount in interface MetricsRegionServerWrapperpublic long getLeafIndexMissCount()
getLeafIndexMissCount in interface MetricsRegionServerWrapperpublic long getBloomChunkMissCount()
getBloomChunkMissCount in interface MetricsRegionServerWrapperpublic long getMetaMissCount()
getMetaMissCount in interface MetricsRegionServerWrapperpublic long getRootIndexMissCount()
getRootIndexMissCount in interface MetricsRegionServerWrapperpublic long getIntermediateIndexMissCount()
getIntermediateIndexMissCount in interface MetricsRegionServerWrapperpublic long getFileInfoMissCount()
getFileInfoMissCount in interface MetricsRegionServerWrapperpublic long getGeneralBloomMetaMissCount()
getGeneralBloomMetaMissCount in interface MetricsRegionServerWrapperpublic long getDeleteFamilyBloomMissCount()
getDeleteFamilyBloomMissCount in interface MetricsRegionServerWrapperpublic long getTrailerMissCount()
getTrailerMissCount in interface MetricsRegionServerWrapperpublic long getDataHitCount()
getDataHitCount in interface MetricsRegionServerWrapperpublic long getLeafIndexHitCount()
getLeafIndexHitCount in interface MetricsRegionServerWrapperpublic long getBloomChunkHitCount()
getBloomChunkHitCount in interface MetricsRegionServerWrapperpublic long getMetaHitCount()
getMetaHitCount in interface MetricsRegionServerWrapperpublic long getRootIndexHitCount()
getRootIndexHitCount in interface MetricsRegionServerWrapperpublic long getIntermediateIndexHitCount()
getIntermediateIndexHitCount in interface MetricsRegionServerWrapperpublic long getFileInfoHitCount()
getFileInfoHitCount in interface MetricsRegionServerWrapperpublic long getGeneralBloomMetaHitCount()
getGeneralBloomMetaHitCount in interface MetricsRegionServerWrapperpublic long getDeleteFamilyBloomHitCount()
getDeleteFamilyBloomHitCount in interface MetricsRegionServerWrapperpublic long getTrailerHitCount()
getTrailerHitCount in interface MetricsRegionServerWrapperCopyright © 2007–2020 The Apache Software Foundation. All rights reserved.