public boolean isMeta() { return wrapped.isMeta(); }
private void acquireRecoveryMemory(KeyExtent extent) throws InterruptedException { if (!extent.isMeta()) { recoveryLock.lock(); } }
private void releaseRecoveryMemory(KeyExtent extent) { if (!extent.isMeta()) { recoveryLock.unlock(); } }
public static TabletType type(KeyExtent ke) { if (ke.isRootTablet()) return ROOT; if (ke.isMeta()) return METADATA; return USER; }
public void executeMajorCompaction(KeyExtent tablet, Runnable compactionTask) { if (tablet.isRootTablet()) { rootMajorCompactionThreadPool.execute(compactionTask); } else if (tablet.isMeta()) { defaultMajorCompactionThreadPool.execute(compactionTask); } else { majorCompactionThreadPool.execute(compactionTask); } }
public static TabletLevel getLevel(KeyExtent extent) { if (!extent.isMeta()) return NORMAL; if (extent.isRootTablet()) return ROOT; return META; }
public void addMigration(KeyExtent tablet, Runnable migrationHandler) { if (tablet.isRootTablet()) { migrationHandler.run(); } else if (tablet.isMeta()) { defaultMigrationPool.execute(migrationHandler); } else { migrationPool.execute(migrationHandler); } }
public void executeSplit(KeyExtent tablet, Runnable splitTask) { if (tablet.isMeta()) { if (tablet.isRootTablet()) { log.warn("Saw request to split root tablet, ignoring"); return; } defaultSplitThreadPool.execute(splitTask); } else { splitThreadPool.execute(splitTask); } }
public void executeReadAhead(KeyExtent tablet, Runnable task) { if (tablet.isRootTablet()) { task.run(); } else if (tablet.isMeta()) { defaultReadAheadThreadPool.execute(task); } else { readAheadThreadPool.execute(task); } }
ScanFileManager(KeyExtent tablet) { tabletReservedReaders = new ArrayList<>(); dataSources = new ArrayList<>(); this.tablet = tablet; continueOnFailure = context.getServerConfigurationFactory().getTableConfiguration(tablet) .getBoolean(Property.TABLE_FAILURES_IGNORE); if (tablet.isMeta()) { continueOnFailure = false; } }
/** * Determines if the replication is enabled for the given {@link KeyExtent} * * @param extent * The {@link KeyExtent} for the Tablet in question * @param conf * The {@link AccumuloConfiguration} for that Tablet (table or namespace) * @return True if this extent is a candidate for replication at the given point in time. */ public static boolean isEnabled(KeyExtent extent, AccumuloConfiguration conf) { if (extent.isMeta() || extent.isRootTablet()) { return false; } return conf.getBoolean(Property.TABLE_REPLICATION); }
private void setupDefaultSecurityLabels(KeyExtent extent) { if (extent.isMeta()) { defaultSecurityLabel = new byte[0]; } else { try { ColumnVisibility cv = new ColumnVisibility( tableConfiguration.get(Property.TABLE_DEFAULT_SCANTIME_VISIBILITY)); this.defaultSecurityLabel = cv.getExpression(); } catch (Exception e) { log.error(e, e); this.defaultSecurityLabel = new byte[0]; } } }
public static void update(ClientContext context, ZooLock zooLock, Mutation m, KeyExtent extent) { Writer t = extent.isMeta() ? getRootTable(context) : getMetadataTable(context); update(t, zooLock, m); }
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!!"); } }
protected static TabletStateStore getStoreForTablet(KeyExtent extent, AccumuloServerContext context) throws DistributedStoreException { if (extent.isRootTablet()) { return new ZooTabletStateStore(); } else if (extent.isMeta()) { return new RootTabletStateStore(context); } else { return new MetaDataStateStore(context); } } }
private Durability getMincEventDurability(KeyExtent extent) { TableConfiguration conf; if (extent.isMeta()) { conf = confFactory.getTableConfiguration(RootTable.ID); } else { conf = confFactory.getTableConfiguration(MetadataTable.ID); } Durability durability = DurabilityImpl.fromString(conf.get(Property.TABLE_DURABILITY)); return durability; }
@Override public void run() { log.info("adding tablet " + extent + " back to the assignment pool (retry " + retryAttempt + ")"); AssignmentHandler handler = new AssignmentHandler(extent, retryAttempt + 1); if (extent.isMeta()) { if (extent.isRootTablet()) { new Daemon(new LoggingRunnable(log, handler), "Root tablet assignment retry") .start(); } else { resourceManager.addMetaDataAssignment(extent, log, handler); } } else { resourceManager.addAssignment(extent, log, handler); } } }, reschedule);
public void assignedTablet(KeyExtent extent) { if (extent.isMeta()) { if (getMasterState().equals(MasterState.UNLOAD_ROOT_TABLET)) { setMasterState(MasterState.UNLOAD_METADATA_TABLETS); } } if (extent.isRootTablet()) { // probably too late, but try anyhow if (getMasterState().equals(MasterState.STOP)) { setMasterState(MasterState.UNLOAD_ROOT_TABLET); } } }
private KeyExtent getHighTablet(KeyExtent range) throws AccumuloException { try { Connector conn = this.master.getConnector(); Scanner scanner = conn.createScanner(range.isMeta() ? RootTable.NAME : MetadataTable.NAME, Authorizations.EMPTY); TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.fetch(scanner); KeyExtent start = new KeyExtent(range.getTableId(), range.getEndRow(), null); scanner.setRange(new Range(start.getMetadataEntry(), null)); Iterator<Entry<Key,Value>> iterator = scanner.iterator(); if (!iterator.hasNext()) { throw new AccumuloException("No last tablet for a merge " + range); } Entry<Key,Value> entry = iterator.next(); KeyExtent highTablet = new KeyExtent(entry.getKey().getRow(), KeyExtent.decodePrevEndRow(entry.getValue())); if (!highTablet.getTableId().equals(range.getTableId())) { throw new AccumuloException("No last tablet for merge " + range + " " + highTablet); } return highTablet; } catch (Exception ex) { throw new AccumuloException("Unexpected failure finding the last tablet for a merge " + range, ex); } }
private static Scanner getTabletLogScanner(ClientContext context, KeyExtent extent) { String tableId = MetadataTable.ID; if (extent.isMeta()) tableId = RootTable.ID; Scanner scanner = new ScannerImpl(context, tableId, Authorizations.EMPTY); scanner.fetchColumnFamily(LogColumnFamily.NAME); Text start = extent.getMetadataEntry(); Key endKey = new Key(start, LogColumnFamily.NAME); endKey = endKey.followingKey(PartialKey.ROW_COLFAM); scanner.setRange(new Range(new Key(start), endKey)); return scanner; }