public Range toMetadataRange() { return wrapped.toMetadataRange(); }
private void ensureTabletHasNoUnexpectedMetadataEntries(AccumuloServerContext context, KeyExtent extent, SortedMap<FileRef,DataFileValue> expectedMapFiles) throws Exception { try (Scanner scanner = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { scanner.setRange(extent.toMetadataRange());
lookups.add(be.toMetadataRange()); removeOverlapping(metaCache, be);
static int checkTable(ClientContext context, String tableName, boolean fix) throws Exception { if (tableName.equals(RootTable.NAME)) { throw new IllegalArgumentException("Can not check root table"); } else if (tableName.equals(MetadataTable.NAME)) { return checkTable(context, RootTable.NAME, MetadataSchema.TabletsSection.getRange(), fix); } else { String tableId = Tables.getTableId(context.getInstance(), tableName); Range range = new KeyExtent(tableId, null, null).toMetadataRange(); return checkTable(context, MetadataTable.NAME, range, fix); } }
public static List<FileRef> getBulkFilesLoaded(Connector conn, KeyExtent extent, long tid) throws IOException { List<FileRef> result = new ArrayList<>(); try (Scanner mscanner = new IsolatedScanner(conn.createScanner( extent.isMeta() ? RootTable.NAME : MetadataTable.NAME, Authorizations.EMPTY))) { VolumeManager fs = VolumeManagerImpl.get(); mscanner.setRange(extent.toMetadataRange()); mscanner.fetchColumnFamily(TabletsSection.BulkFileColumnFamily.NAME); for (Entry<Key,Value> entry : mscanner) { if (Long.parseLong(entry.getValue().toString()) == tid) { result.add(new FileRef(fs, entry.getKey())); } } return result; } catch (TableNotFoundException ex) { // unlikely throw new RuntimeException("Onos! teh metadata table has vanished!!"); } }
TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.fetch(metaScanner); TabletsSection.ServerColumnFamily.TIME_COLUMN.fetch(metaScanner); metaScanner.setRange(new KeyExtent(tableID, null, null).toMetadataRange());
public static void removeBulkLoadEntries(Connector conn, String tableId, long tid) throws Exception { try ( Scanner mscanner = new IsolatedScanner( conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY)); BatchWriter bw = conn.createBatchWriter(MetadataTable.NAME, new BatchWriterConfig())) { mscanner.setRange(new KeyExtent(tableId, null, null).toMetadataRange()); mscanner.fetchColumnFamily(TabletsSection.BulkFileColumnFamily.NAME); byte[] tidAsBytes = Long.toString(tid).getBytes(UTF_8); for (Entry<Key,Value> entry : mscanner) { log.trace("Looking at entry {} with tid {}", entry, tid); if (Arrays.equals(entry.getValue().get(), tidAsBytes)) { log.trace("deleting entry {}", entry); Key key = entry.getKey(); Mutation m = new Mutation(key.getRow()); m.putDelete(key.getColumnFamily(), key.getColumnQualifier()); bw.addMutation(m); } } } }
private void removeLocation(String table, String tableNameToModify) throws TableNotFoundException, MutationsRejectedException { String tableIdToModify = getConnector().tableOperations().tableIdMap().get(tableNameToModify); BatchDeleter deleter = getConnector().createBatchDeleter(table, Authorizations.EMPTY, 1, new BatchWriterConfig()); deleter.setRanges( Collections.singleton(new KeyExtent(tableIdToModify, null, null).toMetadataRange())); deleter.fetchColumnFamily(MetadataSchema.TabletsSection.CurrentLocationColumnFamily.NAME); deleter.delete(); deleter.close(); }
private void reassignLocation(String table, String tableNameToModify) throws TableNotFoundException, MutationsRejectedException { String tableIdToModify = getConnector().tableOperations().tableIdMap().get(tableNameToModify); Scanner scanner = getConnector().createScanner(table, Authorizations.EMPTY); scanner.setRange(new KeyExtent(tableIdToModify, null, null).toMetadataRange()); scanner.fetchColumnFamily(MetadataSchema.TabletsSection.CurrentLocationColumnFamily.NAME); Entry<Key,Value> entry = scanner.iterator().next(); Mutation m = new Mutation(entry.getKey().getRow()); m.putDelete(entry.getKey().getColumnFamily(), entry.getKey().getColumnQualifier(), entry.getKey().getTimestamp()); m.put(entry.getKey().getColumnFamily(), new Text("1234567"), entry.getKey().getTimestamp() + 1, new Value("fake:9005".getBytes(UTF_8))); scanner.close(); BatchWriter bw = getConnector().createBatchWriter(table, null); bw.addMutation(m); bw.close(); }
@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(); }
@Override public long isReady(long tid, Master master) throws Exception { if (!master.hasCycled(creationTime)) { return 50; } boolean done = true; Range tableRange = new KeyExtent(tableId, null, null).toMetadataRange(); Scanner scanner = master.getConnector().createScanner(MetadataTable.NAME, Authorizations.EMPTY); MetaDataTableScanner.configureScanner(scanner, master); scanner.setRange(tableRange); for (Entry<Key,Value> entry : scanner) { TabletLocationState locationState = MetaDataTableScanner .createTabletLocationState(entry.getKey(), entry.getValue()); TabletState state = locationState.getState(master.onlineTabletServers()); if (state.equals(TabletState.ASSIGNED) || state.equals(TabletState.HOSTED)) { log.debug("Still waiting for table to be deleted: " + tableId + " locationState: " + locationState); done = false; break; } } if (!done) return 50; return 0; }
private String getTabletStats() throws Exception { Connector conn = opts.getConnector(); Scanner scanner = conn.createScanner(MetadataTable.NAME, opts.auths); scanner.setBatchSize(scanBatchSize); scanner.fetchColumnFamily(DataFileColumnFamily.NAME); scanner .addScanIterator(new IteratorSetting(1000, "cfc", ColumnFamilyCounter.class.getName())); scanner.setRange(new KeyExtent(tableId, null, null).toMetadataRange()); Stat s = new Stat(); int count = 0; for (Entry<Key,Value> entry : scanner) { count++; s.addStat(Long.parseLong(entry.getValue().toString())); } if (count > 0) return String.format("%d %d %.3f %.3f", s.getMin(), s.getMax(), s.getAverage(), s.getStdDev()); else return "0 0 0 0"; }
private static Scanner createCloneScanner(String tableName, String tableId, Connector conn) throws TableNotFoundException { if (tableId.equals(MetadataTable.ID)) tableName = RootTable.NAME; Scanner mscanner = new IsolatedScanner(conn.createScanner(tableName, Authorizations.EMPTY)); mscanner.setRange(new KeyExtent(tableId, null, null).toMetadataRange()); mscanner.fetchColumnFamily(DataFileColumnFamily.NAME); mscanner.fetchColumnFamily(TabletsSection.CurrentLocationColumnFamily.NAME); mscanner.fetchColumnFamily(TabletsSection.LastLocationColumnFamily.NAME); mscanner.fetchColumnFamily(ClonedColumnFamily.NAME); TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.fetch(mscanner); TabletsSection.ServerColumnFamily.TIME_COLUMN.fetch(mscanner); return mscanner; }
@Test public void testSplit1() throws Exception { Connector conn = getConnector(); String tableName = getUniqueNames(1)[0]; conn.tableOperations().create(tableName); BatchWriter bw1 = conn.createBatchWriter(tableName, new BatchWriterConfig()); bw1.addMutation(createTablet("0", null, null, "/default_tablet", "/default_tablet/0_0.rf")); bw1.flush(); BatchWriter bw2 = conn.createBatchWriter(tableName, new BatchWriterConfig()); MetadataTableUtil.initializeClone(tableName, "0", "1", conn, bw2); bw1.addMutation(createTablet("0", "m", null, "/default_tablet", "/default_tablet/0_0.rf")); bw1.addMutation(createTablet("0", null, "m", "/t-1", "/default_tablet/0_0.rf")); bw1.flush(); int rc = MetadataTableUtil.checkClone(tableName, "0", "1", conn, bw2); assertEquals(0, rc); Scanner scanner = conn.createScanner(tableName, Authorizations.EMPTY); scanner.setRange(new KeyExtent("1", null, null).toMetadataRange()); HashSet<String> files = new HashSet<>(); int count = 0; for (Entry<Key,Value> entry : scanner) { if (entry.getKey().getColumnFamily().equals(DataFileColumnFamily.NAME)) { files.add(entry.getKey().getColumnQualifier().toString()); count++; } } assertEquals(1, count); assertEquals(1, files.size()); assertTrue(files.contains("../0/default_tablet/0_0.rf")); }
scanner.setRange(new KeyExtent("1", null, null).toMetadataRange());
scanner.setRange(new KeyExtent("1", null, null).toMetadataRange());
scanner.setRange(new KeyExtent("1", null, null).toMetadataRange());
@Override public long isReady(long tid, Master master) throws Exception { long reserved = Utils.reserveNamespace(tableInfo.namespaceID, tid, false, true, TableOperation.EXPORT) + Utils.reserveTable(tableInfo.tableID, tid, false, true, TableOperation.EXPORT); if (reserved > 0) return reserved; Connector conn = master.getConnector(); checkOffline(conn); Scanner metaScanner = conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY); metaScanner.setRange(new KeyExtent(tableInfo.tableID, null, null).toMetadataRange()); // scan for locations metaScanner.fetchColumnFamily(TabletsSection.CurrentLocationColumnFamily.NAME); metaScanner.fetchColumnFamily(TabletsSection.FutureLocationColumnFamily.NAME); if (metaScanner.iterator().hasNext()) { return 500; } // use the same range to check for walogs that we used to check for hosted (or future hosted) // tablets // this is done as a separate scan after we check for locations, because walogs are okay only if // there is no location metaScanner.clearColumns(); metaScanner.fetchColumnFamily(LogColumnFamily.NAME); if (metaScanner.iterator().hasNext()) { throw new AcceptableThriftTableOperationException(tableInfo.tableID, tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER, "Write ahead logs found for table"); } return 0; }
mscanner.setRange(new KeyExtent(tableId, null, null).toMetadataRange()); mscanner.fetchColumnFamily(ClonedColumnFamily.NAME);
scanner.setRange(new KeyExtent("1", null, null).toMetadataRange());