Search in sources :

Example 21 with Token

use of org.apache.cassandra.dht.Token in project cassandra by apache.

the class TokenMetadata method getPendingRangesMM.

public Multimap<Range<Token>, InetAddress> getPendingRangesMM(String keyspaceName) {
    Multimap<Range<Token>, InetAddress> map = HashMultimap.create();
    PendingRangeMaps pendingRangeMaps = this.pendingRanges.get(keyspaceName);
    if (pendingRangeMaps != null) {
        for (Map.Entry<Range<Token>, List<InetAddress>> entry : pendingRangeMaps) {
            Range<Token> range = entry.getKey();
            for (InetAddress address : entry.getValue()) {
                map.put(range, address);
            }
        }
    }
    return map;
}
Also used : Token(org.apache.cassandra.dht.Token) Range(org.apache.cassandra.dht.Range) InetAddress(java.net.InetAddress) BiMultiValMap(org.apache.cassandra.utils.BiMultiValMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) SortedBiMultiValMap(org.apache.cassandra.utils.SortedBiMultiValMap) ConcurrentMap(java.util.concurrent.ConcurrentMap)

Example 22 with Token

use of org.apache.cassandra.dht.Token in project cassandra by apache.

the class TokenMetadata method updateNormalTokens.

public void updateNormalTokens(Collection<Token> tokens, InetAddress endpoint) {
    Multimap<InetAddress, Token> endpointTokens = HashMultimap.create();
    for (Token token : tokens) endpointTokens.put(endpoint, token);
    updateNormalTokens(endpointTokens);
}
Also used : Token(org.apache.cassandra.dht.Token) InetAddress(java.net.InetAddress)

Example 23 with Token

use of org.apache.cassandra.dht.Token in project cassandra by apache.

the class TokenMetadata method toString.

public String toString() {
    StringBuilder sb = new StringBuilder();
    lock.readLock().lock();
    try {
        Multimap<InetAddress, Token> endpointToTokenMap = tokenToEndpointMap.inverse();
        Set<InetAddress> eps = endpointToTokenMap.keySet();
        if (!eps.isEmpty()) {
            sb.append("Normal Tokens:");
            sb.append(System.getProperty("line.separator"));
            for (InetAddress ep : eps) {
                sb.append(ep);
                sb.append(':');
                sb.append(endpointToTokenMap.get(ep));
                sb.append(System.getProperty("line.separator"));
            }
        }
        if (!bootstrapTokens.isEmpty()) {
            sb.append("Bootstrapping Tokens:");
            sb.append(System.getProperty("line.separator"));
            for (Map.Entry<Token, InetAddress> entry : bootstrapTokens.entrySet()) {
                sb.append(entry.getValue()).append(':').append(entry.getKey());
                sb.append(System.getProperty("line.separator"));
            }
        }
        if (!leavingEndpoints.isEmpty()) {
            sb.append("Leaving Endpoints:");
            sb.append(System.getProperty("line.separator"));
            for (InetAddress ep : leavingEndpoints) {
                sb.append(ep);
                sb.append(System.getProperty("line.separator"));
            }
        }
        if (!pendingRanges.isEmpty()) {
            sb.append("Pending Ranges:");
            sb.append(System.getProperty("line.separator"));
            sb.append(printPendingRanges());
        }
    } finally {
        lock.readLock().unlock();
    }
    return sb.toString();
}
Also used : Token(org.apache.cassandra.dht.Token) InetAddress(java.net.InetAddress) BiMultiValMap(org.apache.cassandra.utils.BiMultiValMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) SortedBiMultiValMap(org.apache.cassandra.utils.SortedBiMultiValMap) ConcurrentMap(java.util.concurrent.ConcurrentMap)

Example 24 with Token

use of org.apache.cassandra.dht.Token in project cassandra by apache.

the class StreamSession method getSSTableSectionsForRanges.

@VisibleForTesting
public static List<SSTableStreamingSections> getSSTableSectionsForRanges(Collection<Range<Token>> ranges, Collection<ColumnFamilyStore> stores, long overriddenRepairedAt, UUID pendingRepair) {
    Refs<SSTableReader> refs = new Refs<>();
    try {
        for (ColumnFamilyStore cfStore : stores) {
            final List<Range<PartitionPosition>> keyRanges = new ArrayList<>(ranges.size());
            for (Range<Token> range : ranges) keyRanges.add(Range.makeRowRange(range));
            refs.addAll(cfStore.selectAndReference(view -> {
                Set<SSTableReader> sstables = Sets.newHashSet();
                SSTableIntervalTree intervalTree = SSTableIntervalTree.build(view.select(SSTableSet.CANONICAL));
                Predicate<SSTableReader> predicate;
                if (pendingRepair == ActiveRepairService.NO_PENDING_REPAIR) {
                    predicate = Predicates.alwaysTrue();
                } else {
                    predicate = s -> s.isPendingRepair() && s.getSSTableMetadata().pendingRepair.equals(pendingRepair);
                }
                for (Range<PartitionPosition> keyRange : keyRanges) {
                    for (SSTableReader sstable : Iterables.filter(View.sstablesInBounds(keyRange.left, keyRange.right, intervalTree), predicate)) {
                        sstables.add(sstable);
                    }
                }
                if (logger.isDebugEnabled())
                    logger.debug("ViewFilter for {}/{} sstables", sstables.size(), Iterables.size(view.select(SSTableSet.CANONICAL)));
                return sstables;
            }).refs);
        }
        List<SSTableStreamingSections> sections = new ArrayList<>(refs.size());
        for (SSTableReader sstable : refs) {
            long repairedAt = overriddenRepairedAt;
            if (overriddenRepairedAt == ActiveRepairService.UNREPAIRED_SSTABLE)
                repairedAt = sstable.getSSTableMetadata().repairedAt;
            sections.add(new SSTableStreamingSections(refs.get(sstable), sstable.getPositionsForRanges(ranges), sstable.estimatedKeysForRanges(ranges), repairedAt));
        }
        return sections;
    } catch (Throwable t) {
        refs.release();
        throw t;
    }
}
Also used : Refs(org.apache.cassandra.utils.concurrent.Refs) Token(org.apache.cassandra.dht.Token) Range(org.apache.cassandra.dht.Range) SSTableReader(org.apache.cassandra.io.sstable.format.SSTableReader) PartitionPosition(org.apache.cassandra.db.PartitionPosition) SSTableIntervalTree(org.apache.cassandra.db.lifecycle.SSTableIntervalTree) ColumnFamilyStore(org.apache.cassandra.db.ColumnFamilyStore) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 25 with Token

use of org.apache.cassandra.dht.Token in project cassandra by apache.

the class AbstractReplicationAwareTokenAllocatorTest method updateSummary.

private void updateSummary(ReplicationAwareTokenAllocator<Unit> t, Summary su, Summary st, boolean print) {
    int size = t.sortedTokens.size();
    double inverseAverage = 1.0 * size / t.strategy.replicas();
    Map<Unit, Double> ownership = evaluateReplicatedOwnership(t);
    SummaryStatistics unitStat = new SummaryStatistics();
    for (Map.Entry<Unit, Double> en : ownership.entrySet()) unitStat.addValue(en.getValue() * inverseAverage / t.unitToTokens.get(en.getKey()).size());
    su.update(unitStat);
    SummaryStatistics tokenStat = new SummaryStatistics();
    for (Token tok : t.sortedTokens.keySet()) tokenStat.addValue(replicatedTokenOwnership(tok, t.sortedTokens, t.strategy) * inverseAverage);
    st.update(tokenStat);
    if (print) {
        System.out.format("Size %d(%d)   \tunit %s  token %s   %s\n", t.unitCount(), size, mms(unitStat), mms(tokenStat), t.strategy);
        System.out.format("Worst intermediate unit\t%s  token %s\n", su, st);
    }
}
Also used : SummaryStatistics(org.apache.commons.math3.stat.descriptive.SummaryStatistics) Token(org.apache.cassandra.dht.Token)

Aggregations

Token (org.apache.cassandra.dht.Token)173 Range (org.apache.cassandra.dht.Range)73 InetAddress (java.net.InetAddress)66 Test (org.junit.Test)65 BigIntegerToken (org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken)27 TokenMetadata (org.apache.cassandra.locator.TokenMetadata)27 IPartitioner (org.apache.cassandra.dht.IPartitioner)26 SSTableReader (org.apache.cassandra.io.sstable.format.SSTableReader)23 ArrayList (java.util.ArrayList)16 UUID (java.util.UUID)16 VersionedValue (org.apache.cassandra.gms.VersionedValue)15 StringToken (org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken)14 ColumnFamilyStore (org.apache.cassandra.db.ColumnFamilyStore)9 IOException (java.io.IOException)8 ByteBuffer (java.nio.ByteBuffer)8 BytesToken (org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken)8 AbstractReplicationStrategy (org.apache.cassandra.locator.AbstractReplicationStrategy)8 Set (java.util.Set)7 LongToken (org.apache.cassandra.dht.Murmur3Partitioner.LongToken)7 HashSet (java.util.HashSet)6