public Map<Token, Float> describeOwnership(List<Token> sortedTokens) {
      // allTokens will contain the count and be returned, sorted_ranges is shorthand for
      // token<->token math.
      Map<Token, Float> allTokens = new HashMap<Token, Float>();
      List<Range<Token>> sortedRanges = new ArrayList<Range<Token>>();

      // this initializes the counts to 0 and calcs the ranges in order.
      Token lastToken = sortedTokens.get(sortedTokens.size() - 1);
      for (Token node : sortedTokens) {
        allTokens.put(node, new Float(0.0));
        sortedRanges.add(new Range<Token>(lastToken, node));
        lastToken = node;
      }

      for (String ks : Schema.instance.getKeyspaces()) {
        for (CFMetaData cfmd : Schema.instance.getKSMetaData(ks).cfMetaData().values()) {
          for (Range<Token> r : sortedRanges) {
            // Looping over every KS:CF:Range, get the splits size and add it to the count
            allTokens.put(
                r.right,
                allTokens.get(r.right)
                    + StorageService.instance.getSplits(ks, cfmd.cfName, r, 1).size());
          }
        }
      }

      // Sum every count up and divide count/total for the fractional ownership.
      Float total = new Float(0.0);
      for (Float f : allTokens.values()) total += f;
      for (Map.Entry<Token, Float> row : allTokens.entrySet())
        allTokens.put(row.getKey(), row.getValue() / total);

      return allTokens;
    }
예제 #2
0
 public UnfilteredRowIterator next() {
   Map.Entry<PartitionPosition, AtomicBTreePartition> entry = iter.next();
   // Actual stored key should be true DecoratedKey
   assert entry.getKey() instanceof DecoratedKey;
   DecoratedKey key = (DecoratedKey) entry.getKey();
   ClusteringIndexFilter filter = dataRange.clusteringIndexFilter(key);
   return filter.getUnfilteredRowIterator(columnFilter, entry.getValue());
 }
예제 #3
0
 private int findMinLocalDeletionTime(
     Iterator<Map.Entry<PartitionPosition, AtomicBTreePartition>> iterator) {
   int minLocalDeletionTime = Integer.MAX_VALUE;
   while (iterator.hasNext()) {
     Map.Entry<PartitionPosition, AtomicBTreePartition> entry = iterator.next();
     minLocalDeletionTime =
         Math.min(minLocalDeletionTime, entry.getValue().stats().minLocalDeletionTime);
   }
   return minLocalDeletionTime;
 }
예제 #4
0
 public PartitionColumns get() {
   PartitionColumns.Builder builder = PartitionColumns.builder();
   for (Map.Entry<ColumnDefinition, AtomicBoolean> e : predefined.entrySet())
     if (e.getValue().get()) builder.add(e.getKey());
   return builder.addAll(extra).build();
 }