public static ReplicationParams fromMap(Map<String, String> map) { Map<String, String> options = new HashMap<>(map); String className = options.remove(CLASS); Class<? extends AbstractReplicationStrategy> klass = AbstractReplicationStrategy.getClass(className); return new ReplicationParams(klass, options); }
public static ReplicationParams fromMap(Map<String, String> map) { Map<String, String> options = new HashMap<>(map); String className = options.remove(CLASS); Class<? extends AbstractReplicationStrategy> klass = AbstractReplicationStrategy.getClass(className); return new ReplicationParams(klass, options); }
public static ReplicationParams fromMap(Map<String, String> map) { Map<String, String> options = new HashMap<>(map); String className = options.remove(CLASS); Class<? extends AbstractReplicationStrategy> klass = AbstractReplicationStrategy.getClass(className); return new ReplicationParams(klass, options); }
public static KSMetaData fromThrift(KsDef ksd, CFMetaData... cfDefs) throws ConfigurationException { Class<? extends AbstractReplicationStrategy> cls = AbstractReplicationStrategy.getClass(ksd.strategy_class); if (cls.equals(LocalStrategy.class)) throw new ConfigurationException("Unable to use given strategy class: LocalStrategy is reserved for internal use."); return new KSMetaData(ksd.name, cls, ksd.strategy_options == null ? Collections.<String, String>emptyMap() : ksd.strategy_options, ksd.durable_writes, Arrays.asList(cfDefs)); }
public static KSMetaData newKeyspace(String name, String strategyName, Map<String, String> options, boolean durableWrites) throws ConfigurationException { Class<? extends AbstractReplicationStrategy> cls = AbstractReplicationStrategy.getClass(strategyName); if (cls.equals(LocalStrategy.class)) throw new ConfigurationException("Unable to use given strategy class: LocalStrategy is reserved for internal use."); return newKeyspace(name, cls, options, durableWrites, Collections.<CFMetaData>emptyList()); }
public static KeyspaceMetadata fromThrift(KsDef ksd, CFMetaData... cfDefs) throws ConfigurationException { Class<? extends AbstractReplicationStrategy> cls = AbstractReplicationStrategy.getClass(ksd.strategy_class); if (cls.equals(LocalStrategy.class)) throw new ConfigurationException("Unable to use given strategy class: LocalStrategy is reserved for internal use."); Map<String, String> replicationMap = new HashMap<>(); if (ksd.strategy_options != null) replicationMap.putAll(ksd.strategy_options); replicationMap.put(ReplicationParams.CLASS, cls.getName()); return KeyspaceMetadata.create(ksd.name, KeyspaceParams.create(ksd.durable_writes, replicationMap), Tables.of(cfDefs)); }
public static KeyspaceMetadata fromThrift(KsDef ksd, CFMetaData... cfDefs) throws ConfigurationException { Class<? extends AbstractReplicationStrategy> cls = AbstractReplicationStrategy.getClass(ksd.strategy_class); if (cls.equals(LocalStrategy.class)) throw new ConfigurationException("Unable to use given strategy class: LocalStrategy is reserved for internal use."); Map<String, String> replicationMap = new HashMap<>(); if (ksd.strategy_options != null) replicationMap.putAll(ksd.strategy_options); replicationMap.put(ReplicationParams.CLASS, cls.getName()); return KeyspaceMetadata.create(ksd.name, KeyspaceParams.create(ksd.durable_writes, replicationMap), Tables.of(cfDefs)); }
/** * Creates a keyspace for the specified column family. * * @param cfm the column family * @throws ConfigurationException if a problem occurs while creating the keyspace. */ private static void createKeyspaceWithTable(CFMetaData cfm) throws ConfigurationException { KSMetaData ksm = KSMetaData.newKeyspace(cfm.ksName, AbstractReplicationStrategy.getClass("org.apache.cassandra.locator.SimpleStrategy"), ImmutableMap.of("replication_factor", "1"), true, Collections.singleton(cfm)); Schema.instance.load(ksm); }
/** * The <code>CqlParser</code> only goes as far as extracting the keyword arguments * from these statements, so this method is responsible for processing and * validating. * * @throws InvalidRequestException if arguments are missing or unacceptable */ public void validate(ClientState state) throws RequestValidationException { ThriftValidation.validateKeyspaceNotSystem(name); // keyspace name if (!name.matches("\\w+")) throw new InvalidRequestException(String.format("\"%s\" is not a valid keyspace name", name)); if (name.length() > Schema.NAME_LENGTH) throw new InvalidRequestException(String.format("Keyspace names shouldn't be more than %s characters long (got \"%s\")", Schema.NAME_LENGTH, name)); attrs.validate(); if (attrs.getReplicationStrategyClass() == null) throw new ConfigurationException("Missing mandatory replication strategy class"); // The strategy is validated through KSMetaData.validate() in announceNewKeyspace below. // However, for backward compatibility with thrift, this doesn't validate unexpected options yet, // so doing proper validation here. AbstractReplicationStrategy.validateReplicationStrategy(name, AbstractReplicationStrategy.getClass(attrs.getReplicationStrategyClass()), StorageService.instance.getTokenMetadata(), DatabaseDescriptor.getEndpointSnitch(), attrs.getReplicationOptions()); }
/** * Deserialize only Keyspace attributes without nested ColumnFamilies * * @param row Keyspace attributes in serialized form * * @return deserialized keyspace without cf_defs */ public static KSMetaData fromSchema(Row row, Iterable<CFMetaData> cfms, UTMetaData userTypes) { UntypedResultSet.Row result = QueryProcessor.resultify("SELECT * FROM system.schema_keyspaces", row).one(); try { return new KSMetaData(result.getString("keyspace_name"), AbstractReplicationStrategy.getClass(result.getString("strategy_class")), fromJsonMap(result.getString("strategy_options")), result.getBoolean("durable_writes"), cfms, userTypes); } catch (ConfigurationException e) { throw new RuntimeException(e); } }
public void validate(ClientState state) throws RequestValidationException { KSMetaData ksm = Schema.instance.getKSMetaData(name); if (ksm == null) throw new InvalidRequestException("Unknown keyspace " + name); if (ksm.name.equalsIgnoreCase(Keyspace.SYSTEM_KS)) throw new InvalidRequestException("Cannot alter system keyspace"); attrs.validate(); if (attrs.getReplicationStrategyClass() == null && !attrs.getReplicationOptions().isEmpty()) { throw new ConfigurationException("Missing replication strategy class"); } else if (attrs.getReplicationStrategyClass() != null) { // The strategy is validated through KSMetaData.validate() in announceKeyspaceUpdate below. // However, for backward compatibility with thrift, this doesn't validate unexpected options yet, // so doing proper validation here. AbstractReplicationStrategy.validateReplicationStrategy(name, AbstractReplicationStrategy.getClass(attrs.getReplicationStrategyClass()), StorageService.instance.getTokenMetadata(), DatabaseDescriptor.getEndpointSnitch(), attrs.getReplicationOptions()); } }