Search in sources :

Example 1 with StoreStats

use of com.github.ambry.store.StoreStats in project ambry by linkedin.

the class StatsManager method collectAndAggregateAccountStorageStats.

/**
 * Fetch and aggregate account stats from a given {@link Store}
 * @param hostStorageStatsMap map from partition id to container storage stats.
 * @param partitionId specifies the {@link Store} to be fetched from
 * @param unreachablePartitions a {@link List} containing partition Ids that were unable to successfully fetch from
 */
void collectAndAggregateAccountStorageStats(Map<Long, Map<Short, Map<Short, ContainerStorageStats>>> hostStorageStatsMap, PartitionId partitionId, List<PartitionId> unreachablePartitions) {
    Store store = storageManager.getStore(partitionId, false);
    if (store == null) {
        unreachablePartitions.add(partitionId);
    } else {
        try {
            long fetchAndAggregatePerStoreStartTimeMs = time.milliseconds();
            StoreStats storeStats = store.getStoreStats();
            Map<Short, Map<Short, ContainerStorageStats>> containerStatsMap = storeStats.getContainerStorageStats(time.milliseconds(), publishExcludeAccountIds);
            hostStorageStatsMap.put(partitionId.getId(), containerStatsMap);
            metrics.fetchAndAggregateTimePerStoreMs.update(time.milliseconds() - fetchAndAggregatePerStoreStartTimeMs);
            // update delete tombstone stats
            updateDeleteTombstoneStats(storeStats);
        } catch (StoreException e) {
            unreachablePartitions.add(partitionId);
        }
    }
}
Also used : StoreStats(com.github.ambry.store.StoreStats) AccountStatsStore(com.github.ambry.accountstats.AccountStatsStore) Store(com.github.ambry.store.Store) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap) Map(java.util.Map) StoreException(com.github.ambry.store.StoreException)

Example 2 with StoreStats

use of com.github.ambry.store.StoreStats in project ambry by linkedin.

the class StatsManager method collectAndAggregatePartitionClassStorageStats.

/**
 * Fetch and aggregate partition class stats from a given {@link Store}
 * @param hostPartitionClassStorageStatsMap map from partition class to all partition storage stats.
 * @param partitionId specifies the {@link Store} to be fetched from
 * @param unreachablePartitions a {@link List} containing partition Ids that were unable to successfully fetch from
 */
void collectAndAggregatePartitionClassStorageStats(Map<String, Map<Long, Map<Short, Map<Short, ContainerStorageStats>>>> hostPartitionClassStorageStatsMap, PartitionId partitionId, List<PartitionId> unreachablePartitions) {
    Store store = storageManager.getStore(partitionId, false);
    if (store == null) {
        unreachablePartitions.add(partitionId);
    } else {
        try {
            long fetchAndAggregatePerStoreStartTimeMs = time.milliseconds();
            StoreStats storeStats = store.getStoreStats();
            Map<Short, Map<Short, ContainerStorageStats>> containerStatsMap = storeStats.getContainerStorageStats(time.milliseconds(), publishExcludeAccountIds);
            String partitionClassName = partitionId.getPartitionClass();
            hostPartitionClassStorageStatsMap.computeIfAbsent(partitionClassName, k -> new HashMap<>()).put(partitionId.getId(), containerStatsMap);
            metrics.fetchAndAggregateTimePerStoreMs.update(time.milliseconds() - fetchAndAggregatePerStoreStartTimeMs);
        } catch (StoreException e) {
            unreachablePartitions.add(partitionId);
        }
    }
}
Also used : HostPartitionClassStorageStats(com.github.ambry.server.storagestats.HostPartitionClassStorageStats) StorageManager(com.github.ambry.store.StorageManager) LoggerFactory(org.slf4j.LoggerFactory) StoreStats(com.github.ambry.store.StoreStats) AccountService(com.github.ambry.account.AccountService) HostAccountStorageStats(com.github.ambry.server.storagestats.HostAccountStorageStats) HashMap(java.util.HashMap) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) ContainerStorageStats(com.github.ambry.server.storagestats.ContainerStorageStats) ArrayList(java.util.ArrayList) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) Map(java.util.Map) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) ClusterParticipant(com.github.ambry.clustermap.ClusterParticipant) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) StoreException(com.github.ambry.store.StoreException) Time(com.github.ambry.utils.Time) StatsManagerConfig(com.github.ambry.config.StatsManagerConfig) StateModelListenerType(com.github.ambry.clustermap.StateModelListenerType) MetricRegistry(com.codahale.metrics.MetricRegistry) Logger(org.slf4j.Logger) Pair(com.github.ambry.utils.Pair) Iterator(java.util.Iterator) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Set(java.util.Set) Utils(com.github.ambry.utils.Utils) Collectors(java.util.stream.Collectors) File(java.io.File) AccountStatsStore(com.github.ambry.accountstats.AccountStatsStore) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) Store(com.github.ambry.store.Store) List(java.util.List) PartitionStateChangeListener(com.github.ambry.clustermap.PartitionStateChangeListener) StateTransitionException(com.github.ambry.clustermap.StateTransitionException) ReplicaId(com.github.ambry.clustermap.ReplicaId) Account(com.github.ambry.account.Account) TransitionErrorCode(com.github.ambry.clustermap.StateTransitionException.TransitionErrorCode) Collections(java.util.Collections) PartitionId(com.github.ambry.clustermap.PartitionId) StoreStats(com.github.ambry.store.StoreStats) HashMap(java.util.HashMap) AccountStatsStore(com.github.ambry.accountstats.AccountStatsStore) Store(com.github.ambry.store.Store) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap) Map(java.util.Map) StoreException(com.github.ambry.store.StoreException)

Aggregations

AccountStatsStore (com.github.ambry.accountstats.AccountStatsStore)2 Store (com.github.ambry.store.Store)2 StoreException (com.github.ambry.store.StoreException)2 StoreStats (com.github.ambry.store.StoreStats)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 ConcurrentMap (java.util.concurrent.ConcurrentMap)2 MetricRegistry (com.codahale.metrics.MetricRegistry)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 Account (com.github.ambry.account.Account)1 AccountService (com.github.ambry.account.AccountService)1 ClusterParticipant (com.github.ambry.clustermap.ClusterParticipant)1 PartitionId (com.github.ambry.clustermap.PartitionId)1 PartitionStateChangeListener (com.github.ambry.clustermap.PartitionStateChangeListener)1 ReplicaId (com.github.ambry.clustermap.ReplicaId)1 StateModelListenerType (com.github.ambry.clustermap.StateModelListenerType)1 StateTransitionException (com.github.ambry.clustermap.StateTransitionException)1 TransitionErrorCode (com.github.ambry.clustermap.StateTransitionException.TransitionErrorCode)1 StatsManagerConfig (com.github.ambry.config.StatsManagerConfig)1 ContainerStorageStats (com.github.ambry.server.storagestats.ContainerStorageStats)1