Search in sources :

Example 1 with RebootstrappingStore

use of voldemort.store.rebalancing.RebootstrappingStore in project voldemort by voldemort.

the class StorageService method registerNodeStores.

/**
     * For server side routing create NodeStore (socketstore) and pass it on to
     * a {@link RebootstrappingStore}.
     * <p>
     * 
     * The {@link RebootstrappingStore} handles invalid-metadata exceptions
     * introduced due to changes in cluster.xml at different nodes.
     * 
     * @param def
     * @param cluster
     * @param localNode
     */
public void registerNodeStores(StoreDefinition def, Cluster cluster, int localNode) {
    Map<Integer, Store<ByteArray, byte[], byte[]>> nodeStores = new HashMap<Integer, Store<ByteArray, byte[], byte[]>>(cluster.getNumberOfNodes());
    Map<Integer, NonblockingStore> nonblockingStores = new HashMap<Integer, NonblockingStore>(cluster.getNumberOfNodes());
    try {
        for (Node node : cluster.getNodes()) {
            Store<ByteArray, byte[], byte[]> store = getNodeStore(def.getName(), node, localNode);
            this.storeRepository.addNodeStore(node.getId(), store);
            nodeStores.put(node.getId(), store);
            NonblockingStore nonblockingStore = routedStoreFactory.toNonblockingStore(store);
            nonblockingStores.put(node.getId(), nonblockingStore);
        }
        Store<ByteArray, byte[], byte[]> store = routedStoreFactory.create(cluster, def, nodeStores, nonblockingStores, null, null, failureDetector, routedStoreConfig);
        store = new RebootstrappingStore(metadata, storeRepository, voldemortConfig, (RoutedStore) store, storeFactory);
        store = new InconsistencyResolvingStore<ByteArray, byte[], byte[]>(store, new VectorClockInconsistencyResolver<byte[]>());
        this.storeRepository.addRoutedStore(store);
    } catch (Exception e) {
        // Roll back
        for (Node node : cluster.getNodes()) this.storeRepository.removeNodeStore(def.getName(), node.getId());
        throw new VoldemortException(e);
    }
}
Also used : ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) NonblockingStore(voldemort.store.nonblockingstore.NonblockingStore) Node(voldemort.cluster.Node) InvalidMetadataCheckingStore(voldemort.store.invalidmetadata.InvalidMetadataCheckingStore) RoutedStore(voldemort.store.routed.RoutedStore) RedirectingStore(voldemort.store.rebalancing.RedirectingStore) InconsistencyResolvingStore(voldemort.store.versioned.InconsistencyResolvingStore) RebootstrappingStore(voldemort.store.rebalancing.RebootstrappingStore) NonblockingStore(voldemort.store.nonblockingstore.NonblockingStore) Store(voldemort.store.Store) RetentionEnforcingStore(voldemort.store.retention.RetentionEnforcingStore) LoggingStore(voldemort.store.logging.LoggingStore) StatTrackingStore(voldemort.store.stats.StatTrackingStore) QuotaLimitingStore(voldemort.store.quota.QuotaLimitingStore) MetadataStore(voldemort.store.metadata.MetadataStore) RoutedStore(voldemort.store.routed.RoutedStore) VoldemortException(voldemort.VoldemortException) ConfigurationException(voldemort.utils.ConfigurationException) NoSuchCapabilityException(voldemort.store.NoSuchCapabilityException) DisabledStoreException(voldemort.store.DisabledStoreException) VoldemortException(voldemort.VoldemortException) RebootstrappingStore(voldemort.store.rebalancing.RebootstrappingStore) ByteArray(voldemort.utils.ByteArray) VectorClockInconsistencyResolver(voldemort.versioning.VectorClockInconsistencyResolver)

Aggregations

HashMap (java.util.HashMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 VoldemortException (voldemort.VoldemortException)1 Node (voldemort.cluster.Node)1 DisabledStoreException (voldemort.store.DisabledStoreException)1 NoSuchCapabilityException (voldemort.store.NoSuchCapabilityException)1 Store (voldemort.store.Store)1 InvalidMetadataCheckingStore (voldemort.store.invalidmetadata.InvalidMetadataCheckingStore)1 LoggingStore (voldemort.store.logging.LoggingStore)1 MetadataStore (voldemort.store.metadata.MetadataStore)1 NonblockingStore (voldemort.store.nonblockingstore.NonblockingStore)1 QuotaLimitingStore (voldemort.store.quota.QuotaLimitingStore)1 RebootstrappingStore (voldemort.store.rebalancing.RebootstrappingStore)1 RedirectingStore (voldemort.store.rebalancing.RedirectingStore)1 RetentionEnforcingStore (voldemort.store.retention.RetentionEnforcingStore)1 RoutedStore (voldemort.store.routed.RoutedStore)1 StatTrackingStore (voldemort.store.stats.StatTrackingStore)1 InconsistencyResolvingStore (voldemort.store.versioned.InconsistencyResolvingStore)1 ByteArray (voldemort.utils.ByteArray)1 ConfigurationException (voldemort.utils.ConfigurationException)1