Package voldemort.store.slop

Source Code of voldemort.store.slop.SlopStorageEngine

/*
* Copyright 2008-2010 LinkedIn, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package voldemort.store.slop;

import java.util.List;
import java.util.Map;

import voldemort.VoldemortException;
import voldemort.annotations.jmx.JmxGetter;
import voldemort.cluster.Cluster;
import voldemort.serialization.ByteArraySerializer;
import voldemort.serialization.IdentitySerializer;
import voldemort.serialization.SlopSerializer;
import voldemort.store.AbstractStorageEngine;
import voldemort.store.StorageEngine;
import voldemort.store.StoreCapabilityType;
import voldemort.store.serialized.SerializingStorageEngine;
import voldemort.store.stats.SlopStats;
import voldemort.utils.ByteArray;
import voldemort.utils.ClosableIterator;
import voldemort.utils.Pair;
import voldemort.versioning.Version;
import voldemort.versioning.Versioned;

/**
* Tracks statistics of hints that were attempted, but not successfully pushed
* last time a pusher job ran; also tracks hints that have been added after the
* last run
*
*/
public class SlopStorageEngine extends AbstractStorageEngine<ByteArray, byte[], byte[]> {

    public static final String SLOP_STORE_NAME = "slop";

    private final StorageEngine<ByteArray, byte[], byte[]> slopEngine;
    private final SlopSerializer slopSerializer;
    private final SlopStats slopStats;

    public SlopStorageEngine(StorageEngine<ByteArray, byte[], byte[]> slopEngine, Cluster cluster) {
        super(slopEngine.getName());
        this.slopEngine = slopEngine;
        this.slopSerializer = new SlopSerializer();
        this.slopStats = new SlopStats(cluster);
    }

    @JmxGetter(name = "outstandingTotal", description = "slops outstanding since last push")
    public long getOutstandingTotal() {
        return slopStats.getTotalCount(SlopStats.Tracked.OUTSTANDING);
    }

    @JmxGetter(name = "outstandingByNode", description = "slops outstanding by node since last push")
    public Map<Integer, Long> getOutstandingByNode() {
        return slopStats.asMap(SlopStats.Tracked.OUTSTANDING);
    }

    @JmxGetter(name = "outstandingByZone", description = "slops outstanding by zone since last push")
    public Map<Integer, Long> getOutstandingByZone() {
        return slopStats.byZone(SlopStats.Tracked.OUTSTANDING);
    }

    public void resetStats(Map<Integer, Long> newValues) {
        slopStats.setAll(SlopStats.Tracked.OUTSTANDING, newValues);
    }

    public StorageEngine<ByteArray, Slop, byte[]> asSlopStore() {
        return SerializingStorageEngine.wrap(this,
                                             new ByteArraySerializer(),
                                             slopSerializer,
                                             new IdentitySerializer());
    }

    @Override
    public ClosableIterator<Pair<ByteArray, Versioned<byte[]>>> entries() {
        return slopEngine.entries();
    }

    @Override
    public ClosableIterator<ByteArray> keys() {
        return slopEngine.keys();
    }

    @Override
    public ClosableIterator<Pair<ByteArray, Versioned<byte[]>>> entries(int partition) {
        return slopEngine.entries(partition);
    }

    @Override
    public ClosableIterator<ByteArray> keys(int partition) {
        return slopEngine.keys(partition);
    }

    @Override
    public void truncate() {
        slopEngine.truncate();
    }

    @Override
    public List<Versioned<byte[]>> get(ByteArray key, byte[] transforms) throws VoldemortException {
        return slopEngine.get(key, transforms);
    }

    @Override
    public Map<ByteArray, List<Versioned<byte[]>>> getAll(Iterable<ByteArray> keys,
                                                          Map<ByteArray, byte[]> transforms)
            throws VoldemortException {
        return slopEngine.getAll(keys, transforms);
    }

    @Override
    public void put(ByteArray key, Versioned<byte[]> value, byte[] transforms)
            throws VoldemortException {
        slopEngine.put(key, value, transforms);
    }

    @Override
    public boolean delete(ByteArray key, Version version) throws VoldemortException {
        return slopEngine.delete(key, version);
    }

    @Override
    public void close() throws VoldemortException {
        slopEngine.close();
    }

    @Override
    public Object getCapability(StoreCapabilityType capability) {
        return slopEngine.getCapability(capability);
    }

    @Override
    public List<Version> getVersions(ByteArray key) {
        return slopEngine.getVersions(key);
    }

    @Override
    public boolean isPartitionAware() {
        return slopEngine.isPartitionAware();
    }

    @Override
    public boolean isPartitionScanSupported() {
        return slopEngine.isPartitionScanSupported();
    }

    @Override
    public boolean beginBatchModifications() {
        return slopEngine.beginBatchModifications();
    }

    @Override
    public boolean endBatchModifications() {
        return slopEngine.endBatchModifications();
    }
}
TOP

Related Classes of voldemort.store.slop.SlopStorageEngine

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.