@Override public void applyModels() throws IOException { KSMetaData ksm = DatabaseDescriptor.getTableDefinition(name); // remove the table from the static instances. Table table = Table.clear(ksm.name); if (table == null) throw new IOException("Table is not active. " + ksm.name); // remove all cfs from the table instance. for (CFMetaData cfm : ksm.cfMetaData().values()) { CFMetaData.purge(cfm); table.dropCf(cfm.cfId); SystemTable.markForRemoval(cfm); } // reset defs. DatabaseDescriptor.clearTableDefinition(ksm, newVersion); CommitLog.instance().forceNewSegment(); Migration.cleanupDeadFiles(blockOnFileDeletion); // clear up any local hinted data for this keyspace. HintedHandOffManager.renameHints(name, null); }
public void applyModels() throws IOException { ColumnFamilyStore cfs = Table.open(tableName).getColumnFamilyStore(cfName); // reinitialize the table. KSMetaData existing = DatabaseDescriptor.getTableDefinition(tableName); CFMetaData cfm = existing.cfMetaData().get(cfName); KSMetaData ksm = makeNewKeyspaceDefinition(existing); CFMetaData.purge(cfm); DatabaseDescriptor.setTableDefinition(ksm, newVersion); if (!clientMode) { cfs.snapshot(Table.getTimestampedSnapshotName(null)); CompactionManager.instance.getCompactionLock().lock(); cfs.flushLock.lock(); try { Table.open(ksm.name).dropCf(cfm.cfId); } finally { cfs.flushLock.unlock(); CompactionManager.instance.getCompactionLock().unlock(); } } }