List of usage examples for org.apache.commons.collections.iterators CollatingIterator addIterator
public void addIterator(final Iterator iterator)
From source file:com.bigdata.dastor.io.CompactionIterator.java
@SuppressWarnings("unchecked") protected static CollatingIterator getCollatingIterator(Iterable<SSTableReader> sstables) throws IOException { CollatingIterator iter = FBUtilities.<IteratingRow>getCollatingIterator(); for (SSTableReader sstable : sstables) { iter.addIterator(sstable.getScanner(FILE_BUFFER_SIZE)); }/*w ww. java2 s .c o m*/ return iter; }
From source file:com.bigdata.dastor.service.RangeSliceResponseResolver.java
public List<Row> resolve(Collection<Message> responses) throws DigestMismatchException, IOException { CollatingIterator collator = new CollatingIterator(new Comparator<Pair<Row, InetAddress>>() { public int compare(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) { return partitioner.getToken(o1.left.key).compareTo(partitioner.getToken(o2.left.key)); }//from w w w . j a v a 2s.c o m }); int n = 0; for (Message response : responses) { RangeSliceReply reply = RangeSliceReply.read(response.getMessageBody()); n = Math.max(n, reply.rows.size()); collator.addIterator(new RowIterator(reply.rows.iterator(), response.getFrom())); } // for each row, compute the combination of all different versions seen, and repair incomplete versions ReducingIterator<Pair<Row, InetAddress>, Row> iter = new ReducingIterator<Pair<Row, InetAddress>, Row>( collator) { List<ColumnFamily> versions = new ArrayList<ColumnFamily>(sources.size()); List<InetAddress> versionSources = new ArrayList<InetAddress>(sources.size()); String key; @Override protected boolean isEqual(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) { return o1.left.key.equals(o2.left.key); } public void reduce(Pair<Row, InetAddress> current) { key = current.left.key; versions.add(current.left.cf); versionSources.add(current.right); } protected Row getReduced() { ColumnFamily resolved = ReadResponseResolver.resolveSuperset(versions); ReadResponseResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources); versions.clear(); versionSources.clear(); return new Row(key, resolved); } }; List<Row> resolvedRows = new ArrayList<Row>(n); while (iter.hasNext()) resolvedRows.add(iter.next()); return resolvedRows; }
From source file:org.apache.cassandra.db.compaction.CompactionIterator.java
@SuppressWarnings("unchecked") protected static CollatingIterator getCollatingIterator(Iterable<SSTableReader> sstables) throws IOException { // TODO CollatingIterator iter = FBUtilities.<SSTableIdentityIterator>getCollatingIterator(); CollatingIterator iter = FBUtilities.getCollatingIterator(); for (SSTableReader sstable : sstables) { iter.addIterator(sstable.getDirectScanner(FILE_BUFFER_SIZE)); }//from www . j a v a 2 s . com return iter; }
From source file:org.apache.cassandra.service.RangeSliceResponseResolver.java
public Iterable<Row> resolve() throws IOException { CollatingIterator collator = new CollatingIterator(new Comparator<Pair<Row, InetAddress>>() { public int compare(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) { return o1.left.key.compareTo(o2.left.key); }/*w ww . j a v a2s.co m*/ }); int n = 0; for (Message response : responses) { RangeSliceReply reply = RangeSliceReply.read(response.getMessageBody(), response.getVersion()); n = Math.max(n, reply.rows.size()); collator.addIterator(new RowIterator(reply.rows.iterator(), response.getFrom())); } // for each row, compute the combination of all different versions seen, and repair incomplete versions return new ReducingIterator<Pair<Row, InetAddress>, Row>(collator) { List<ColumnFamily> versions = new ArrayList<ColumnFamily>(sources.size()); List<InetAddress> versionSources = new ArrayList<InetAddress>(sources.size()); DecoratedKey key; @Override protected boolean isEqual(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) { return o1.left.key.equals(o2.left.key); } public void reduce(Pair<Row, InetAddress> current) { key = current.left.key; versions.add(current.left.cf); versionSources.add(current.right); } protected Row getReduced() { ColumnFamily resolved = RowRepairResolver.resolveSuperset(versions); RowRepairResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources); versions.clear(); versionSources.clear(); return new Row(key, resolved); } }; }
From source file:org.apache.cassandra.service.RowRepairResolver.java
static ColumnFamily resolveSuperset(List<ColumnFamily> versions) { assert versions.size() > 0; ColumnFamily resolved = null;/*w w w . ja va2 s. c o m*/ for (ColumnFamily cf : versions) { if (cf == null) continue; if (resolved == null) resolved = cf.cloneMeShallow(); else resolved.delete(cf); } if (resolved == null) return null; // mimic the collectCollatedColumn + removeDeleted path that getColumnFamily takes. // this will handle removing columns and subcolumns that are supressed by a row or // supercolumn tombstone. QueryFilter filter = new QueryFilter(null, new QueryPath(resolved.metadata().cfName), new IdentityQueryFilter()); CollatingIterator iter = new CollatingIterator(resolved.metadata().comparator.columnComparator); for (ColumnFamily version : versions) { if (version == null) continue; iter.addIterator(version.getColumnsMap().values().iterator()); } filter.collectCollatedColumns(resolved, iter, Integer.MIN_VALUE); return ColumnFamilyStore.removeDeleted(resolved, Integer.MIN_VALUE); }