/** Return true if the column family exists */ public boolean cfExists( String keyspace, String cfName ) { KeyspaceDefinition ksDef = cluster.describeKeyspace( keyspace ); if ( ksDef == null ) { return false; } for ( ColumnFamilyDefinition cf : ksDef.getCfDefs() ) { if ( cfName.equals( cf.getName() ) ) { return true; } } return false; }
/** * Lazy creates a column family in the keyspace. If it doesn't exist, it will be created, then the call will sleep * until all nodes have acknowledged the schema change */ public void createColumnFamily( String keyspace, ColumnFamilyDefinition cfDef ) { if ( !keySpaceExists( keyspace ) ) { createKeySpace( keyspace ); } //add the cf if ( !cfExists( keyspace, cfDef.getName() ) ) { //default read repair chance to 0.1 cfDef.setReadRepairChance( 0.1d ); cfDef.setCompactionStrategy( "LeveledCompactionStrategy" ); cfDef.setCompactionStrategyOptions( new MapUtils.HashMapBuilder().map("sstable_size_in_mb", "512" ) ); cluster.addColumnFamily( cfDef, true ); logger.info( "Created column family {} in keyspace {}", cfDef.getName(), keyspace ); } }
private boolean doesLockCFExist(KeyspaceDefinition keyspaceDef) { for (ColumnFamilyDefinition cfdef : keyspaceDef.getCfDefs()) { if (cfdef.getName().equals(lockManagerConfigurator.getLockManagerCF())) { return true; } } return false; }
private boolean verifyCFCreation(List<ColumnFamilyDefinition> cfDefs) { for (ColumnFamilyDefinition cfDef : cfDefs) { if (cfDef.getName().equals(HLockManagerConfigurator.DEFAUT_LOCK_MANAGER_CF)) return true; } return false; }
private void checkCreateLockSchema() { KeyspaceDefinition keyspaceDef = cluster.describeKeyspace(keyspace.getKeyspaceName()); if (keyspaceDef == null) { ColumnFamilyDefinition cfDef = createColumnFamilyDefinition(); KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition(keyspace.getKeyspaceName(), ThriftKsDef.DEF_STRATEGY_CLASS, lockManagerConfigurator.getReplicationFactor(), Arrays.asList(cfDef)); log.info("Creating Keyspace and Column Family for LockManager with name (KSPS/CF): (" + newKeyspace.getName() + " / " + cfDef.getName()); cluster.addKeyspace(newKeyspace, true); } else { log.info("Keyspace for LockManager already exists. Skipping creation."); // The Keyspace exists but we don't know anything about the CF yet. if (!doesLockCFExist(keyspaceDef)) { // create it ColumnFamilyDefinition cfDef = createColumnFamilyDefinition(); log.info("Creating Column Family for LockManager with name: " + cfDef.getName()); cluster.addColumnFamily(cfDef, true); } else { log.info("Column Family for LockManager already exists. Skipping creation."); } } }
/** * Private helper to determine if a column family has already been created in a keyspace * * @param columnFamilyDefinition the column family definition * @param keyspaceDefinition the keyspace definition * @return true if the column family is already present in the keyspace */ protected boolean keyspaceContainsColumnFamily(ColumnFamilyDefinition columnFamilyDefinition, KeyspaceDefinition keyspaceDefinition) { boolean contains = false; for (ColumnFamilyDefinition columnFamilyDefinitionEntry : keyspaceDefinition.getCfDefs()) { if (columnFamilyDefinitionEntry.getName().equals(columnFamilyDefinition.getName())) { contains = true; break; } } return contains; }
/** * Method in charge of setting the consistency level for defined column families. * @param pColFams Column families * @return Map<String, HConsistencyLevel> with the mapping between colFams and consistency level. */ private Map<String, HConsistencyLevel> getConsisLevelForColFams(List<ColumnFamilyDefinition> pColFams) { Map<String, HConsistencyLevel> clMap = new HashMap<String, HConsistencyLevel>(); // Get columnFamily consistency level. String colFamConsisLvl = (colFamConsLvl != null && !colFamConsLvl.isEmpty())?colFamConsLvl:DEFAULT_HECTOR_CONSIS_LEVEL; LOG.debug("ColumnFamily consistency level configured to '" + colFamConsisLvl + "'."); // Define consistency for ColumnFamily "ColumnFamily" for (ColumnFamilyDefinition colFamDef : pColFams) clMap.put(colFamDef.getName(), HConsistencyLevel.valueOf(colFamConsisLvl)); return clMap; }
/** * Returns true if a given keyspace has a column family. * * @param ksdef the keyspace. * @param cfname the column family name. * @return true if the keyspace has the column family, false otherwise. */ public static boolean hasColumnFamily(final KeyspaceDefinition ksdef, final String cfname) { for (final ColumnFamilyDefinition cfdef : ksdef.getCfDefs()) { if (cfdef.getName().equals(cfname)) { return true; } } return false; } }
/** * Returns true if a given keyspace has a column family. * * @param ksdef the keyspace. * @param cfname the column family name. * @return true if the keyspace has the column family, false otherwise. */ public static boolean hasColumnFamily(final KeyspaceDefinition ksdef, final String cfname) { for (final ColumnFamilyDefinition cfdef : ksdef.getCfDefs()) { if (cfdef.getName().equals(cfname)) { return true; } } return false; } }
name = columnFamilyDefinition.getName(); columnType = columnFamilyDefinition.getColumnType(); comparatorType = columnFamilyDefinition.getComparatorType();
/** * Private helper to obtain a column family from a keyspace by name * * @param name the column family name * @param keyspaceDefinition the keyspace * @return the column family if found, null otherwise */ protected ColumnFamilyDefinition getColumnFamilyFromKeyspace(String name, KeyspaceDefinition keyspaceDefinition) { ColumnFamilyDefinition definition = null; for (ColumnFamilyDefinition columnFamilyDefinitionEntry : keyspaceDefinition.getCfDefs()) { if (columnFamilyDefinitionEntry.getName().equals(name)) { definition = columnFamilyDefinitionEntry; break; } } return definition; }
private boolean doesLockCFExist(KeyspaceDefinition keyspaceDef) { for (ColumnFamilyDefinition cfdef : keyspaceDef.getCfDefs()) { if (cfdef.getName().equals(lockManagerConfigurator.getLockManagerCF())) { return true; } } return false; }
/** * Private helper to initialize the schema */ protected void initializeSchema() throws Exception { if (keyspaceDefinitions.size() == 0) throw new IllegalStateException("no keyspace definitions founds, maybe add some entities to the factory"); for (KeyspaceDefinition keyspaceDefinition : ThriftKsDef.fromThriftList(new ArrayList<KsDef>(keyspaceDefinitions.values()))) { KeyspaceDefinition existingKeyspace = cluster.describeKeyspace(keyspaceDefinition.getName()); if (existingKeyspace == null) { cluster.addKeyspace(keyspaceDefinition, true); } else { for (ColumnFamilyDefinition columnFamilyDefinition : keyspaceDefinition.getCfDefs()) { if (keyspaceContainsColumnFamily(columnFamilyDefinition, existingKeyspace)) { log.debug(String.format("found column family %s, updating schema", columnFamilyDefinition.getName())); ColumnFamilyDefinition existingColumnFamilyDefinition = getColumnFamilyFromKeyspace(columnFamilyDefinition.getName(), existingKeyspace); existingColumnFamilyDefinition.getColumnMetadata().clear(); for (ColumnDefinition columnDefinition : columnFamilyDefinition.getColumnMetadata()) { existingColumnFamilyDefinition.addColumnDefinition(columnDefinition); } cluster.updateColumnFamily(existingColumnFamilyDefinition, true); } else { log.debug(String.format("not found column family %s, adding to schema", columnFamilyDefinition.getName())); cluster.addColumnFamily(columnFamilyDefinition, true); } } } } }
private static ColumnFamilyDefinition checkColumnFamilyName(List<ColumnFamilyDefinition> columnFamilyDefinitions, ColumnFamilyModel expectedColumnFamilyModel) throws Error { ColumnFamilyDefinition columnFamily = selectUnique(columnFamilyDefinitions, having(on(ColumnFamilyDefinition.class).getName(), equalTo(expectedColumnFamilyModel.getName()))); if (columnFamily == null) { throw FailureHandler.createFailure("Expected name of column family is %s but was not found.", expectedColumnFamilyModel.getName()); } return columnFamily; }
private static ColumnFamilyDefinition checkColumnFamilyName(List<ColumnFamilyDefinition> columnFamilyDefinitions, ColumnFamilyModel expectedColumnFamilyModel) throws Error { ColumnFamilyDefinition columnFamily = selectUnique(columnFamilyDefinitions, having(on(ColumnFamilyDefinition.class).getName(), equalTo(expectedColumnFamilyModel.getName()))); if (columnFamily == null) { throw FailureHandler.createFailure("Expected name of column family is %s but was not found.", expectedColumnFamilyModel.getName()); } return columnFamily; }
private void checkCreateLockSchema() { KeyspaceDefinition keyspaceDef = cluster.describeKeyspace(keyspace.getKeyspaceName()); if (keyspaceDef == null) { ColumnFamilyDefinition cfDef = createColumnFamilyDefinition(); KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition(keyspace.getKeyspaceName(), ThriftKsDef.DEF_STRATEGY_CLASS, lockManagerConfigurator.getReplicationFactor(), Arrays.asList(cfDef)); log.info("Creating Keyspace and Column Family for LockManager with name (KSPS/CF): (" + newKeyspace.getName() + " / " + cfDef.getName()); cluster.addKeyspace(newKeyspace, true); } else { log.info("Keyspace for LockManager already exists. Skipping creation."); // The Keyspace exists but we don't know anything about the CF yet. if (!doesLockCFExist(keyspaceDef)) { // create it ColumnFamilyDefinition cfDef = createColumnFamilyDefinition(); log.info("Creating Column Family for LockManager with name: " + cfDef.getName()); cluster.addColumnFamily(cfDef, true); } else { log.info("Column Family for LockManager already exists. Skipping creation."); } } }
public ThriftCfDef(ColumnFamilyDefinition columnFamilyDefinition) { keyspace = columnFamilyDefinition.getKeyspaceName(); name = columnFamilyDefinition.getName(); columnType = columnFamilyDefinition.getColumnType(); comparatorType = columnFamilyDefinition.getComparatorType();
name = columnFamilyDefinition.getName(); columnType = columnFamilyDefinition.getColumnType(); comparatorType = columnFamilyDefinition.getComparatorType();
public ThriftCfDef(ColumnFamilyDefinition columnFamilyDefinition) { keyspace = columnFamilyDefinition.getKeyspaceName(); name = columnFamilyDefinition.getName(); columnType = columnFamilyDefinition.getColumnType(); comparatorType = columnFamilyDefinition.getComparatorType();