Search in sources :

Example 11 with Store

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

the class ReplicationTest method replicaFromInactiveToOfflineTest.

/**
 * Test INACTIVE -> OFFLINE transition on existing replica (both success and failure cases)
 */
@Test
public void replicaFromInactiveToOfflineTest() throws Exception {
    MockClusterMap clusterMap = new MockClusterMap();
    ClusterMapConfig clusterMapConfig = new ClusterMapConfig(verifiableProperties);
    MockHelixParticipant.metricRegistry = new MetricRegistry();
    MockHelixParticipant mockHelixParticipant = new MockHelixParticipant(clusterMapConfig);
    Pair<StorageManager, ReplicationManager> managers = createStorageManagerAndReplicationManager(clusterMap, clusterMapConfig, mockHelixParticipant);
    StorageManager storageManager = managers.getFirst();
    MockReplicationManager replicationManager = (MockReplicationManager) managers.getSecond();
    // 1. test replica not found case
    try {
        mockHelixParticipant.onPartitionBecomeOfflineFromInactive("-1");
        fail("should fail because of invalid partition");
    } catch (StateTransitionException e) {
        assertEquals("Error code doesn't match", ReplicaNotFound, e.getErrorCode());
    }
    // 2. test store not started case
    PartitionId existingPartition = replicationManager.partitionToPartitionInfo.keySet().iterator().next();
    storageManager.shutdownBlobStore(existingPartition);
    try {
        mockHelixParticipant.onPartitionBecomeOfflineFromInactive(existingPartition.toPathString());
        fail("should fail because store is not started");
    } catch (StateTransitionException e) {
        assertEquals("Error code doesn't match", StoreNotStarted, e.getErrorCode());
    }
    storageManager.startBlobStore(existingPartition);
    // before testing success case, let's write a blob (size = 100) into local store and add a delete record for new blob
    Store localStore = storageManager.getStore(existingPartition);
    MockId id = new MockId(TestUtils.getRandomString(10), Utils.getRandomShort(TestUtils.RANDOM), Utils.getRandomShort(TestUtils.RANDOM));
    long crc = (new Random()).nextLong();
    long blobSize = 100;
    MessageInfo info = new MessageInfo(id, blobSize, false, false, Utils.Infinite_Time, crc, id.getAccountId(), id.getContainerId(), Utils.Infinite_Time);
    List<MessageInfo> infos = new ArrayList<>();
    List<ByteBuffer> buffers = new ArrayList<>();
    ByteBuffer buffer = ByteBuffer.wrap(TestUtils.getRandomBytes((int) blobSize));
    infos.add(info);
    buffers.add(buffer);
    localStore.put(new MockMessageWriteSet(infos, buffers));
    // delete the blob
    int deleteRecordSize = (int) (new DeleteMessageFormatInputStream(id, (short) 0, (short) 0, 0).getSize());
    MessageInfo deleteInfo = new MessageInfo(id, deleteRecordSize, id.getAccountId(), id.getContainerId(), time.milliseconds());
    localStore.delete(Collections.singletonList(deleteInfo));
    int sizeOfPutAndHeader = 100 + 18;
    int sizeOfWhole = sizeOfPutAndHeader + deleteRecordSize;
    // note that end offset of last PUT = 100 + 18 = 118, end offset of the store is sizeOfWhole
    // 3. test success case (create a new thread and trigger INACTIVE -> OFFLINE transition)
    ReplicaId localReplica = storageManager.getReplica(existingPartition.toPathString());
    // put a decommission-in-progress file into local store dir
    File decommissionFile = new File(localReplica.getReplicaPath(), "decommission_in_progress");
    assertTrue("Couldn't create decommission file in local store", decommissionFile.createNewFile());
    decommissionFile.deleteOnExit();
    assertNotSame("Before disconnection, the local store state shouldn't be OFFLINE", ReplicaState.OFFLINE, localStore.getCurrentState());
    mockHelixParticipant.registerPartitionStateChangeListener(StateModelListenerType.ReplicationManagerListener, replicationManager.replicationListener);
    CountDownLatch participantLatch = new CountDownLatch(1);
    replicationManager.listenerExecutionLatch = new CountDownLatch(1);
    Utils.newThread(() -> {
        mockHelixParticipant.onPartitionBecomeOfflineFromInactive(existingPartition.toPathString());
        participantLatch.countDown();
    }, false).start();
    assertTrue("Partition state change listener in ReplicationManager didn't get called within 1 sec", replicationManager.listenerExecutionLatch.await(1, TimeUnit.SECONDS));
    // the state of local store should be updated to OFFLINE
    assertEquals("Local store state is not expected", ReplicaState.OFFLINE, localStore.getCurrentState());
    // update replication lag between local and peer replicas
    List<RemoteReplicaInfo> remoteReplicaInfos = replicationManager.partitionToPartitionInfo.get(existingPartition).getRemoteReplicaInfos();
    ReplicaId peerReplica1 = remoteReplicaInfos.get(0).getReplicaId();
    ReplicaId peerReplica2 = remoteReplicaInfos.get(1).getReplicaId();
    // peer1 catches up with last PUT, peer2 catches up with end offset of local store. In this case, SyncUp is not complete
    replicationManager.updateTotalBytesReadByRemoteReplica(existingPartition, peerReplica1.getDataNodeId().getHostname(), peerReplica1.getReplicaPath(), sizeOfPutAndHeader);
    replicationManager.updateTotalBytesReadByRemoteReplica(existingPartition, peerReplica2.getDataNodeId().getHostname(), peerReplica2.getReplicaPath(), sizeOfWhole);
    assertFalse("Only one peer replica has fully caught up with end offset so sync-up should not complete", mockHelixParticipant.getReplicaSyncUpManager().isSyncUpComplete(localReplica));
    // make peer1 catch up with end offset
    replicationManager.updateTotalBytesReadByRemoteReplica(existingPartition, peerReplica1.getDataNodeId().getHostname(), peerReplica1.getReplicaPath(), sizeOfWhole);
    // Now, sync-up should complete and transition should be able to proceed.
    assertTrue("Inactive-To-Offline transition didn't complete within 1 sec", participantLatch.await(1, TimeUnit.SECONDS));
    assertFalse("Local store should be stopped after transition", localStore.isStarted());
    storageManager.shutdown();
}
Also used : StorageManager(com.github.ambry.store.StorageManager) ArrayList(java.util.ArrayList) Store(com.github.ambry.store.Store) MockId(com.github.ambry.store.MockId) MockHelixParticipant(com.github.ambry.clustermap.MockHelixParticipant) Random(java.util.Random) MetricRegistry(com.codahale.metrics.MetricRegistry) DeleteMessageFormatInputStream(com.github.ambry.messageformat.DeleteMessageFormatInputStream) MockPartitionId(com.github.ambry.clustermap.MockPartitionId) PartitionId(com.github.ambry.clustermap.PartitionId) CountDownLatch(java.util.concurrent.CountDownLatch) ByteBuffer(java.nio.ByteBuffer) ClusterMapConfig(com.github.ambry.config.ClusterMapConfig) MockReplicaId(com.github.ambry.clustermap.MockReplicaId) ReplicaId(com.github.ambry.clustermap.ReplicaId) MessageInfo(com.github.ambry.store.MessageInfo) MockMessageWriteSet(com.github.ambry.store.MockMessageWriteSet) File(java.io.File) MockClusterMap(com.github.ambry.clustermap.MockClusterMap) StateTransitionException(com.github.ambry.clustermap.StateTransitionException) Test(org.junit.Test)

Example 12 with Store

use of com.github.ambry.store.Store 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 13 with Store

use of com.github.ambry.store.Store 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)

Example 14 with Store

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

the class AmbryServerRequests method handleRemoveStoreRequest.

/**
 * Handles admin request that removes a BlobStore from current node
 * @param partitionId the {@link PartitionId} associated with BlobStore
 * @return {@link ServerErrorCode} represents result of handling admin request.
 */
private ServerErrorCode handleRemoveStoreRequest(PartitionId partitionId) throws StoreException, IOException {
    ServerErrorCode errorCode = ServerErrorCode.No_Error;
    ReplicaId replicaId = storeManager.getReplica(partitionId.toPathString());
    if (replicaId == null) {
        logger.error("{} doesn't exist on current node", partitionId);
        return ServerErrorCode.Partition_Unknown;
    }
    // Attempt to remove replica from stats manager. If replica doesn't exist, log info but don't fail the request
    statsManager.removeReplica(replicaId);
    // Attempt to remove replica from replication manager. If replica doesn't exist, log info but don't fail the request
    ((ReplicationManager) replicationEngine).removeReplica(replicaId);
    Store store = ((StorageManager) storeManager).getStore(partitionId, true);
    // Attempt to remove store from storage manager.
    if (storeManager.removeBlobStore(partitionId) && store != null) {
        ((BlobStore) store).deleteStoreFiles();
        for (ReplicaStatusDelegate replicaStatusDelegate : ((BlobStore) store).getReplicaStatusDelegates()) {
            // Remove store from sealed and stopped list (if present)
            logger.info("Removing store from sealed and stopped list(if present)");
            replicaStatusDelegate.unseal(replicaId);
            replicaStatusDelegate.unmarkStopped(Collections.singletonList(replicaId));
        }
    } else {
        errorCode = ServerErrorCode.Unknown_Error;
    }
    return errorCode;
}
Also used : ReplicationManager(com.github.ambry.replication.ReplicationManager) ReplicaStatusDelegate(com.github.ambry.clustermap.ReplicaStatusDelegate) StorageManager(com.github.ambry.store.StorageManager) Store(com.github.ambry.store.Store) BlobStore(com.github.ambry.store.BlobStore) ReplicaId(com.github.ambry.clustermap.ReplicaId) BlobStore(com.github.ambry.store.BlobStore)

Example 15 with Store

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

the class AmbryServerRequestsTest method addBlobStoreFailureTest.

@Test
public void addBlobStoreFailureTest() throws Exception {
    // create newPartition1 that no replica sits on current node.
    List<MockDataNodeId> dataNodes = clusterMap.getDataNodes().stream().filter(node -> !node.getHostname().equals(dataNodeId.getHostname()) || node.getPort() != dataNodeId.getPort()).collect(Collectors.toList());
    PartitionId newPartition1 = clusterMap.createNewPartition(dataNodes);
    // test that getting new replica from cluster map fails
    sendAndVerifyStoreControlRequest(newPartition1, BlobStoreControlAction.AddStore, (short) 0, ServerErrorCode.Replica_Unavailable);
    // create newPartition2 that has one replica on current node
    PartitionId newPartition2 = clusterMap.createNewPartition(clusterMap.getDataNodes());
    // test that adding store into StorageManager fails
    storageManager.returnValueOfAddBlobStore = false;
    sendAndVerifyStoreControlRequest(newPartition2, BlobStoreControlAction.AddStore, (short) 0, ServerErrorCode.Unknown_Error);
    storageManager.returnValueOfAddBlobStore = true;
    // test that adding replica into ReplicationManager fails (we first add replica into ReplicationManager to trigger failure)
    ReplicaId replicaToAdd = clusterMap.getBootstrapReplica(newPartition2.toPathString(), dataNodeId);
    replicationManager.addReplica(replicaToAdd);
    sendAndVerifyStoreControlRequest(newPartition2, BlobStoreControlAction.AddStore, (short) 0, ServerErrorCode.Unknown_Error);
    assertTrue("Remove replica from replication manager should succeed.", replicationManager.removeReplica(replicaToAdd));
    // test that adding replica into StatsManager fails
    statsManager.returnValOfAddReplica = false;
    sendAndVerifyStoreControlRequest(newPartition2, BlobStoreControlAction.AddStore, (short) 0, ServerErrorCode.Unknown_Error);
    statsManager.returnValOfAddReplica = true;
}
Also used : NetworkRequest(com.github.ambry.network.NetworkRequest) AdminRequestOrResponseType(com.github.ambry.protocol.AdminRequestOrResponseType) GetOption(com.github.ambry.protocol.GetOption) Arrays(java.util.Arrays) BlobProperties(com.github.ambry.messageformat.BlobProperties) CatchupStatusAdminResponse(com.github.ambry.protocol.CatchupStatusAdminResponse) StoreErrorCodes(com.github.ambry.store.StoreErrorCodes) TestUtils(com.github.ambry.utils.TestUtils) Map(java.util.Map) ServerMetrics(com.github.ambry.commons.ServerMetrics) RequestOrResponseType(com.github.ambry.protocol.RequestOrResponseType) UndeleteRequest(com.github.ambry.protocol.UndeleteRequest) ReplicaMetadataRequest(com.github.ambry.protocol.ReplicaMetadataRequest) EnumSet(java.util.EnumSet) ReplicationConfig(com.github.ambry.config.ReplicationConfig) FindTokenHelper(com.github.ambry.replication.FindTokenHelper) StatsManagerConfig(com.github.ambry.config.StatsManagerConfig) Set(java.util.Set) MockPartitionId(com.github.ambry.clustermap.MockPartitionId) ReplicaMetadataRequestInfo(com.github.ambry.protocol.ReplicaMetadataRequestInfo) AmbryRequests(com.github.ambry.protocol.AmbryRequests) StoreKey(com.github.ambry.store.StoreKey) PartitionRequestInfo(com.github.ambry.protocol.PartitionRequestInfo) MockFindTokenHelper(com.github.ambry.replication.MockFindTokenHelper) IdUndeletedStoreException(com.github.ambry.store.IdUndeletedStoreException) RunWith(org.junit.runner.RunWith) ArrayList(java.util.ArrayList) TestUtils(com.github.ambry.clustermap.TestUtils) SystemTime(com.github.ambry.utils.SystemTime) StoreException(com.github.ambry.store.StoreException) ReplicationControlAdminRequest(com.github.ambry.protocol.ReplicationControlAdminRequest) MockStoreKeyConverterFactory(com.github.ambry.store.MockStoreKeyConverterFactory) Before(org.junit.Before) ReplicaState(com.github.ambry.clustermap.ReplicaState) MetricRegistry(com.codahale.metrics.MetricRegistry) Properties(java.util.Properties) VerifiableProperties(com.github.ambry.config.VerifiableProperties) IOException(java.io.IOException) Test(org.junit.Test) MessageFormatException(com.github.ambry.messageformat.MessageFormatException) Store(com.github.ambry.store.Store) ReplicaId(com.github.ambry.clustermap.ReplicaId) MockReplicationManager(com.github.ambry.replication.MockReplicationManager) ByteBufferInputStream(com.github.ambry.utils.ByteBufferInputStream) ClusterMapConfig(com.github.ambry.config.ClusterMapConfig) BlobStoreControlAdminRequest(com.github.ambry.protocol.BlobStoreControlAdminRequest) BlobStore(com.github.ambry.store.BlobStore) Assert(org.junit.Assert) Response(com.github.ambry.protocol.Response) ByteBufferDataInputStream(com.github.ambry.utils.ByteBufferDataInputStream) MessageInfoTest(com.github.ambry.store.MessageInfoTest) DataNodeId(com.github.ambry.clustermap.DataNodeId) ByteBuffer(java.nio.ByteBuffer) Unpooled(io.netty.buffer.Unpooled) MockReplicaId(com.github.ambry.clustermap.MockReplicaId) GetResponse(com.github.ambry.protocol.GetResponse) ErrorMapping(com.github.ambry.commons.ErrorMapping) BlobStoreControlAction(com.github.ambry.protocol.BlobStoreControlAction) JSONObject(org.json.JSONObject) After(org.junit.After) SocketRequestResponseChannel(com.github.ambry.network.SocketRequestResponseChannel) NettyByteBufLeakHelper(com.github.ambry.utils.NettyByteBufLeakHelper) GetRequest(com.github.ambry.protocol.GetRequest) Parameterized(org.junit.runners.Parameterized) ServerNetworkResponseMetrics(com.github.ambry.network.ServerNetworkResponseMetrics) PartitionResponseInfo(com.github.ambry.protocol.PartitionResponseInfo) StoreKeyFactory(com.github.ambry.store.StoreKeyFactory) ServerConfig(com.github.ambry.config.ServerConfig) Utils(com.github.ambry.utils.Utils) Collectors(java.util.stream.Collectors) List(java.util.List) ReplicaMetadataResponse(com.github.ambry.protocol.ReplicaMetadataResponse) TtlUpdateRequest(com.github.ambry.protocol.TtlUpdateRequest) MessageFormatFlags(com.github.ambry.messageformat.MessageFormatFlags) BlobType(com.github.ambry.messageformat.BlobType) PartitionId(com.github.ambry.clustermap.PartitionId) BlobId(com.github.ambry.commons.BlobId) CatchupStatusAdminRequest(com.github.ambry.protocol.CatchupStatusAdminRequest) ByteBufferChannel(com.github.ambry.utils.ByteBufferChannel) HashMap(java.util.HashMap) AdminResponse(com.github.ambry.protocol.AdminResponse) MessageWriteSet(com.github.ambry.store.MessageWriteSet) HashSet(java.util.HashSet) AdminRequest(com.github.ambry.protocol.AdminRequest) MockHelixParticipant(com.github.ambry.clustermap.MockHelixParticipant) CommonTestUtils(com.github.ambry.commons.CommonTestUtils) RequestOrResponse(com.github.ambry.protocol.RequestOrResponse) Assume(org.junit.Assume) ReplicaMetadataResponseInfo(com.github.ambry.protocol.ReplicaMetadataResponseInfo) PutRequest(com.github.ambry.protocol.PutRequest) RequestControlAdminRequest(com.github.ambry.protocol.RequestControlAdminRequest) MockDataNodeId(com.github.ambry.clustermap.MockDataNodeId) MessageFormatInputStreamTest(com.github.ambry.messageformat.MessageFormatInputStreamTest) ReplicationManager(com.github.ambry.replication.ReplicationManager) DeleteRequest(com.github.ambry.protocol.DeleteRequest) ReplicaStatusDelegate(com.github.ambry.clustermap.ReplicaStatusDelegate) ReplicaType(com.github.ambry.clustermap.ReplicaType) MockWrite(com.github.ambry.store.MockWrite) ClusterMap(com.github.ambry.clustermap.ClusterMap) Mockito(org.mockito.Mockito) ReplicationException(com.github.ambry.replication.ReplicationException) MessageInfo(com.github.ambry.store.MessageInfo) ReplicaEventType(com.github.ambry.clustermap.ReplicaEventType) Send(com.github.ambry.network.Send) MessageFormatRecord(com.github.ambry.messageformat.MessageFormatRecord) Collections(java.util.Collections) MockClusterMap(com.github.ambry.clustermap.MockClusterMap) InputStream(java.io.InputStream) MockDataNodeId(com.github.ambry.clustermap.MockDataNodeId) MockPartitionId(com.github.ambry.clustermap.MockPartitionId) PartitionId(com.github.ambry.clustermap.PartitionId) ReplicaId(com.github.ambry.clustermap.ReplicaId) MockReplicaId(com.github.ambry.clustermap.MockReplicaId) Test(org.junit.Test) MessageInfoTest(com.github.ambry.store.MessageInfoTest) MessageFormatInputStreamTest(com.github.ambry.messageformat.MessageFormatInputStreamTest)

Aggregations

Store (com.github.ambry.store.Store)35 ArrayList (java.util.ArrayList)22 PartitionId (com.github.ambry.clustermap.PartitionId)19 ReplicaId (com.github.ambry.clustermap.ReplicaId)17 StoreException (com.github.ambry.store.StoreException)16 IOException (java.io.IOException)13 MockPartitionId (com.github.ambry.clustermap.MockPartitionId)12 StorageManager (com.github.ambry.store.StorageManager)12 Test (org.junit.Test)12 MessageFormatException (com.github.ambry.messageformat.MessageFormatException)11 MessageInfo (com.github.ambry.store.MessageInfo)11 MockReplicaId (com.github.ambry.clustermap.MockReplicaId)10 DataInputStream (java.io.DataInputStream)10 HashMap (java.util.HashMap)10 MetricRegistry (com.codahale.metrics.MetricRegistry)9 StoreKey (com.github.ambry.store.StoreKey)9 List (java.util.List)8 Map (java.util.Map)8 ClusterMapConfig (com.github.ambry.config.ClusterMapConfig)7 ServerNetworkResponseMetrics (com.github.ambry.network.ServerNetworkResponseMetrics)7