static void initializeClone(String srcTableId, String tableId, Connector conn, BatchWriter bw) throws TableNotFoundException, MutationsRejectedException { TabletIterator ti = new TabletIterator(createCloneScanner(srcTableId, conn), new KeyExtent(new Text(srcTableId), null, null).toMetadataRange(), true, true); if (!ti.hasNext()) throw new RuntimeException(" table deleted during clone? srcTableId = " + srcTableId); while (ti.hasNext()) bw.addMutation(createCloneMutation(srcTableId, tableId, ti.next())); bw.flush(); }
resetScanner(); curMetaDataRow = null; tm.clear();
while (currentTabletKeys == null) { currentTabletKeys = scanToPrevEndRow(); if (currentTabletKeys.size() == 0) { break; resetScanner(); resetScanner();
@Override public Iterator<Entry<Key,Value>> getReferenceIterator() throws TableNotFoundException, AccumuloException, AccumuloSecurityException { IsolatedScanner scanner = new IsolatedScanner( getConnector().createScanner(tableName, Authorizations.EMPTY)); scanner.fetchColumnFamily(DataFileColumnFamily.NAME); scanner.fetchColumnFamily(ScanFileColumnFamily.NAME); TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.fetch(scanner); TabletIterator tabletIterator = new TabletIterator(scanner, MetadataSchema.TabletsSection.getRange(), false, true); return Iterators.concat(Iterators.transform(tabletIterator, new Function<Map<Key,Value>,Iterator<Entry<Key,Value>>>() { @Override public Iterator<Entry<Key,Value>> apply(Map<Key,Value> input) { return input.entrySet().iterator(); } })); }
@Override public Map<Key,Value> next() { if (!hasNext()) throw new NoSuchElementException(); Map<Key,Value> tmp = currentTabletKeys; currentTabletKeys = null; Set<Entry<Key,Value>> es = tmp.entrySet(); Iterator<Entry<Key,Value>> esIter = es.iterator(); while (esIter.hasNext()) { Map.Entry<Key,Value> entry = esIter.next(); if (!returnPrevEndRow && Constants.METADATA_PREV_ROW_COLUMN.hasColumns(entry.getKey())) { esIter.remove(); } if (!returnDir && Constants.METADATA_DIRECTORY_COLUMN.hasColumns(entry.getKey())) { esIter.remove(); } } return tmp; }
while (currentTabletKeys == null) { currentTabletKeys = scanToPrevEndRow(); if (currentTabletKeys.size() == 0) { break; resetScanner(); resetScanner();
@Override public Map<Key,Value> next() { if (!hasNext()) throw new NoSuchElementException(); Map<Key,Value> tmp = currentTabletKeys; currentTabletKeys = null; Set<Entry<Key,Value>> es = tmp.entrySet(); Iterator<Entry<Key,Value>> esIter = es.iterator(); while (esIter.hasNext()) { Map.Entry<Key,Value> entry = esIter.next(); if (!returnPrevEndRow && TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.hasColumns(entry.getKey())) { esIter.remove(); } if (!returnDir && TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.hasColumns(entry.getKey())) { esIter.remove(); } } return tmp; }
@VisibleForTesting public static void initializeClone(String tableName, String srcTableId, String tableId, Connector conn, BatchWriter bw) throws TableNotFoundException, MutationsRejectedException { TabletIterator ti; if (srcTableId.equals(MetadataTable.ID)) ti = new TabletIterator(createCloneScanner(tableName, srcTableId, conn), new Range(), true, true); else ti = new TabletIterator(createCloneScanner(tableName, srcTableId, conn), new KeyExtent(srcTableId, null, null).toMetadataRange(), true, true); if (!ti.hasNext()) throw new RuntimeException(" table deleted during clone? srcTableId = " + srcTableId); while (ti.hasNext()) bw.addMutation(createCloneMutation(srcTableId, tableId, ti.next())); bw.flush(); }
resetScanner(); curMetaDataRow = null; tm.clear();
static int checkClone(String srcTableId, String tableId, Connector conn, BatchWriter bw) throws TableNotFoundException, MutationsRejectedException { TabletIterator srcIter = new TabletIterator(createCloneScanner(srcTableId, conn), new KeyExtent(new Text(srcTableId), null, null).toMetadataRange(), true, true); TabletIterator cloneIter = new TabletIterator(createCloneScanner(tableId, conn), new KeyExtent(new Text(tableId), null, null).toMetadataRange(), true, true); if (!cloneIter.hasNext() || !srcIter.hasNext()) throw new RuntimeException(" table deleted during clone? srcTableId = " + srcTableId + " tableId=" + tableId); while (cloneIter.hasNext()) { Map<Key,Value> cloneTablet = cloneIter.next(); Text cloneEndRow = new KeyExtent(cloneTablet.keySet().iterator().next().getRow(), (Text) null).getEndRow(); HashSet<String> cloneFiles = new HashSet<String>(); Map<Key,Value> srcTablet = srcIter.next(); srcTablets.add(srcTablet); srcTablet = srcIter.next(); srcTablets.add(srcTablet); srcEndRow = new KeyExtent(srcTablet.keySet().iterator().next().getRow(), (Text) null).getEndRow();
@Override protected void resetScanner() { try { Scanner ds = conn.createScanner(metadataTableName, Authorizations.EMPTY); Text tablet = new KeyExtent("0", new Text("m"), null).getMetadataEntry(); ds.setRange(new Range(tablet, true, tablet, true)); Mutation m = new Mutation(tablet); BatchWriter bw = conn.createBatchWriter(metadataTableName, new BatchWriterConfig()); for (Entry<Key,Value> entry : ds) { Key k = entry.getKey(); m.putDelete(k.getColumnFamily(), k.getColumnQualifier(), k.getTimestamp()); } bw.addMutation(m); bw.close(); } catch (Exception e) { throw new RuntimeException(e); } super.resetScanner(); }
Constants.METADATA_DIRECTORY_COLUMN.fetch(scanner); TabletIterator tabletIterator = new TabletIterator(scanner, Constants.METADATA_KEYSPACE, false, true); while (tabletIterator.hasNext()) { Map<Key,Value> tabletKeyValues = tabletIterator.next();
@VisibleForTesting public static int checkClone(String tableName, String srcTableId, String tableId, Connector conn, BatchWriter bw) throws TableNotFoundException, MutationsRejectedException { TabletIterator srcIter = new TabletIterator(createCloneScanner(tableName, srcTableId, conn), new KeyExtent(srcTableId, null, null).toMetadataRange(), true, true); TabletIterator cloneIter = new TabletIterator(createCloneScanner(tableName, tableId, conn), new KeyExtent(tableId, null, null).toMetadataRange(), true, true); if (!cloneIter.hasNext() || !srcIter.hasNext()) throw new RuntimeException( " table deleted during clone? srcTableId = " + srcTableId + " tableId=" + tableId); while (cloneIter.hasNext()) { Map<Key,Value> cloneTablet = cloneIter.next(); Text cloneEndRow = new KeyExtent(cloneTablet.keySet().iterator().next().getRow(), (Text) null) .getEndRow(); Map<Key,Value> srcTablet = srcIter.next(); srcTablets.add(srcTablet); srcTablet = srcIter.next(); srcTablets.add(srcTablet); srcEndRow = new KeyExtent(srcTablet.keySet().iterator().next().getRow(), (Text) null)