public boolean isRootTablet() { return wrapped.isRootTablet(); }
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); } }
public boolean isMeta() { return getTableId().equals(MetadataTable.ID) || isRootTablet(); }
/** * 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); }
TabletGoalState getSystemGoalState(TabletLocationState tls) { switch (getMasterState()) { case NORMAL: return TabletGoalState.HOSTED; case HAVE_LOCK: // fall-through intended case INITIAL: // fall-through intended case SAFE_MODE: if (tls.extent.isMeta()) return TabletGoalState.HOSTED; return TabletGoalState.UNASSIGNED; case UNLOAD_METADATA_TABLETS: if (tls.extent.isRootTablet()) return TabletGoalState.HOSTED; return TabletGoalState.UNASSIGNED; case UNLOAD_ROOT_TABLET: return TabletGoalState.UNASSIGNED; case STOP: return TabletGoalState.UNASSIGNED; default: throw new IllegalStateException("Unknown Master State"); } }
public static void updateTabletFlushID(KeyExtent extent, long flushID, ClientContext context, ZooLock zooLock) { if (!extent.isRootTablet()) { Mutation m = new Mutation(extent.getMetadataEntry()); TabletsSection.ServerColumnFamily.FLUSH_COLUMN.put(m, new Value((flushID + "").getBytes(UTF_8))); update(context, zooLock, m, extent); } }
public static void updateTabletCompactID(KeyExtent extent, long compactID, ClientContext context, ZooLock zooLock) { if (!extent.isRootTablet()) { Mutation m = new Mutation(extent.getMetadataEntry()); TabletsSection.ServerColumnFamily.COMPACT_COLUMN.put(m, new Value((compactID + "").getBytes(UTF_8))); update(context, zooLock, m, extent); } }
private int findMaxTabletId(KeyExtent extent, List<Path> recoveryLogs) throws IOException { int tabletId = -1; try (RecoveryLogsIterator rli = new RecoveryLogsIterator(fs, recoveryLogs, minKey(DEFINE_TABLET), maxKey(DEFINE_TABLET))) { KeyExtent alternative = extent; if (extent.isRootTablet()) { alternative = RootTable.OLD_EXTENT; } while (rli.hasNext()) { LogFileKey key = rli.next().getKey(); checkState(key.event == DEFINE_TABLET); // should only fail if bug elsewhere if (key.tablet.equals(extent) || key.tablet.equals(alternative)) { checkState(key.tabletId >= 0, "tabletId %s for %s is negative", key.tabletId, extent); checkState(tabletId == -1 || key.tabletId >= tabletId); // should only fail if bug in // RecoveryLogsIterator if (tabletId != key.tabletId) { tabletId = key.tabletId; } } } } return tabletId; }
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); } } }
/** * new data file update function adds one data file to a tablet's list * * @param path * should be relative to the table directory * */ public static void updateTabletDataFile(ClientContext context, KeyExtent extent, FileRef path, FileRef mergeFile, DataFileValue dfv, String time, Set<FileRef> filesInUseByScans, String address, ZooLock zooLock, Set<String> unusedWalLogs, TServerInstance lastLocation, long flushId) { if (extent.isRootTablet()) { if (unusedWalLogs != null) { updateRootTabletDataFile(extent, path, mergeFile, dfv, time, filesInUseByScans, address, zooLock, unusedWalLogs, lastLocation, flushId); } return; } Mutation m = getUpdateForTabletDataFile(extent, path, mergeFile, dfv, time, filesInUseByScans, address, zooLock, unusedWalLogs, lastLocation, flushId); MetadataTableUtil.update(context, zooLock, m, extent); }
if (extent.isRootTablet()) { getRootLogEntries(result); Path rootDir = new Path(getRootTabletDir());
@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 static void updateTabletVolumes(KeyExtent extent, List<LogEntry> logsToRemove, List<LogEntry> logsToAdd, List<FileRef> filesToRemove, SortedMap<FileRef,DataFileValue> filesToAdd, String newDir, ZooLock zooLock, AccumuloServerContext context) { if (extent.isRootTablet()) { if (newDir != null) throw new IllegalArgumentException("newDir not expected for " + extent); if (filesToRemove.size() != 0 || filesToAdd.size() != 0) throw new IllegalArgumentException("files not expected for " + extent); // add before removing in case of process death for (LogEntry logEntry : logsToAdd) addRootLogEntry(context, zooLock, logEntry); removeUnusedWALEntries(context, extent, logsToRemove, zooLock); } else { Mutation m = new Mutation(extent.getMetadataEntry()); for (LogEntry logEntry : logsToRemove) m.putDelete(logEntry.getColumnFamily(), logEntry.getColumnQualifier()); for (LogEntry logEntry : logsToAdd) m.put(logEntry.getColumnFamily(), logEntry.getColumnQualifier(), logEntry.getValue()); for (FileRef fileRef : filesToRemove) m.putDelete(DataFileColumnFamily.NAME, fileRef.meta()); for (Entry<FileRef,DataFileValue> entry : filesToAdd.entrySet()) m.put(DataFileColumnFamily.NAME, entry.getKey().meta(), new Value(entry.getValue().encode())); if (newDir != null) ServerColumnFamily.DIRECTORY_COLUMN.put(m, new Value(newDir.getBytes(UTF_8))); update(context, m, extent); } }
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); } } }
public static void removeUnusedWALEntries(AccumuloServerContext context, KeyExtent extent, final List<LogEntry> entries, ZooLock zooLock) { if (extent.isRootTablet()) { retryZooKeeperUpdate(context, zooLock, new ZooOperation() { @Override public void run(IZooReaderWriter rw) throws KeeperException, InterruptedException, IOException { String root = getZookeeperLogLocation(); for (LogEntry entry : entries) { String path = root + "/" + entry.getUniqueID(); log.debug("Removing " + path + " from zookeeper"); rw.recursiveDelete(path, NodeMissingPolicy.SKIP); } } }); } else { Mutation m = new Mutation(extent.getMetadataEntry()); for (LogEntry entry : entries) { m.putDelete(entry.getColumnFamily(), entry.getColumnQualifier()); } update(context, zooLock, m, extent); } }