コード例 #1
0
ファイル: CFPropDefs.java プロジェクト: daidong/GraphTrek
  public void validate() throws ConfigurationException, SyntaxException {
    // Skip validation if the comapction strategy class is already set as it means we've alreayd
    // prepared (and redoing it would set strategyClass back to null, which we don't want)
    if (compactionStrategyClass != null) return;

    validate(keywords, obsoleteKeywords);

    Map<String, String> compactionOptions = getCompactionOptions();
    if (!compactionOptions.isEmpty()) {
      String strategy = compactionOptions.get(COMPACTION_STRATEGY_CLASS_KEY);
      if (strategy == null)
        throw new ConfigurationException(
            "Missing sub-option '"
                + COMPACTION_STRATEGY_CLASS_KEY
                + "' for the '"
                + KW_COMPACTION
                + "' option.");

      compactionStrategyClass = CFMetaData.createCompactionStrategy(strategy);
      compactionOptions.remove(COMPACTION_STRATEGY_CLASS_KEY);

      CFMetaData.validateCompactionOptions(compactionStrategyClass, compactionOptions);
    }

    Map<String, String> compressionOptions = getCompressionOptions();
    if (!compressionOptions.isEmpty()) {
      String sstableCompressionClass =
          compressionOptions.get(CompressionParameters.SSTABLE_COMPRESSION);
      if (sstableCompressionClass == null)
        throw new ConfigurationException(
            "Missing sub-option '"
                + CompressionParameters.SSTABLE_COMPRESSION
                + "' for the '"
                + KW_COMPRESSION
                + "' option.");

      Integer chunkLength = CompressionParameters.DEFAULT_CHUNK_LENGTH;
      if (compressionOptions.containsKey(CompressionParameters.CHUNK_LENGTH_KB))
        chunkLength =
            CompressionParameters.parseChunkLength(
                compressionOptions.get(CompressionParameters.CHUNK_LENGTH_KB));

      Map<String, String> remainingOptions = new HashMap<>(compressionOptions);
      remainingOptions.remove(CompressionParameters.SSTABLE_COMPRESSION);
      remainingOptions.remove(CompressionParameters.CHUNK_LENGTH_KB);
      CompressionParameters cp =
          new CompressionParameters(sstableCompressionClass, chunkLength, remainingOptions);
      cp.validate();
    }

    validateMinimumInt(KW_DEFAULT_TIME_TO_LIVE, 0, CFMetaData.DEFAULT_DEFAULT_TIME_TO_LIVE);

    Integer minIndexInterval = getInt(KW_MIN_INDEX_INTERVAL, null);
    Integer maxIndexInterval = getInt(KW_MAX_INDEX_INTERVAL, null);
    if (minIndexInterval != null && minIndexInterval < 1)
      throw new ConfigurationException(KW_MIN_INDEX_INTERVAL + " must be greater than 0");
    if (maxIndexInterval != null && minIndexInterval != null && maxIndexInterval < minIndexInterval)
      throw new ConfigurationException(
          KW_MAX_INDEX_INTERVAL + " must be greater than " + KW_MIN_INDEX_INTERVAL);

    SpeculativeRetry.fromString(
        getString(KW_SPECULATIVE_RETRY, SpeculativeRetry.RetryType.NONE.name()));
  }