apache/cassandra · error · ConfigurationException

Invalid configuration, %s (%s) should be less than 70%% of t

Error message

Invalid configuration, %s (%s) should be less than 70%% of the targetSSTableSize (%s)

What it means

The min_sstable_size option must be strictly less than ~70.7% (1/sqrt(2)) of target_sstable_size; validateOptions enforces this so the two sizing options don't conflict. The error reports both values pretty-printed to help compare them.

Source

Thrown at src/java/org/apache/cassandra/db/compaction/unified/Controller.java:633

                throw new ConfigurationException(String.format("Invalid overlap inclusion method %s. The valid options are %s.",
                                                               s,
                                                               Arrays.toString(Overlaps.InclusionMethod.values())));
            }
        }

        s = options.remove(MIN_SSTABLE_SIZE_OPTION);
        if (s != null)
        {
            try
            {
                long sizeInBytes = FBUtilities.parseHumanReadableBytes(s);
                // zero is a valid option to disable feature
                if (sizeInBytes < 0)
                    throw new ConfigurationException(String.format("Invalid configuration, %s should be greater than or equal to 0 (zero)",
                                                                   MIN_SSTABLE_SIZE_OPTION));
                long limit = (long) Math.ceil(targetSSTableSize * INVERSE_SQRT_2);
                if (sizeInBytes >= limit)
                    throw new ConfigurationException(String.format("Invalid configuration, %s (%s) should be less than 70%% of the targetSSTableSize (%s)",
                                                                   MIN_SSTABLE_SIZE_OPTION,
                                                                   FBUtilities.prettyPrintMemory(sizeInBytes),
                                                                   FBUtilities.prettyPrintMemory(targetSSTableSize)));
            }
            catch (NumberFormatException e)
            {
                throw new ConfigurationException(String.format("%s is not a valid size in bytes for %s",
                                                               s,
                                                               MIN_SSTABLE_SIZE_OPTION),
                                                 e);
            }
        }

        s = options.remove(SSTABLE_GROWTH_OPTION);
        if (s != null)
        {
            try
            {

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Lower min_sstable_size below 70% of target_sstable_size (e.g. min 100MiB for target 160MiB).
  2. Raise target_sstable_size so it is more than sqrt(2) times min_sstable_size.
  3. Set min_sstable_size to 0 to disable the feature and avoid the constraint.

Example fix

// before
{'target_sstable_size': '160MiB', 'min_sstable_size': '200MiB'}
// after
{'target_sstable_size': '160MiB', 'min_sstable_size': '100MiB'}
Defensive patterns

Strategy: validation

Validate before calling

long min = FBUtilities.parseHumanReadableBytes(opts.get("min_sstable_size"));
long target = FBUtilities.parseHumanReadableBytes(opts.get("target_sstable_size"));
if (min >= Math.ceil(target / Math.sqrt(2))) throw new IllegalArgumentException("min_sstable_size must be < ~70% of target_sstable_size");

Try / catch

try { applyCompactionOptions(); } catch (ConfigurationException e) { logger.error("min/target size conflict: {}", e.getMessage()); }

Prevention

When it happens

Trigger: Setting 'min_sstable_size' >= ceil(target_sstable_size * INVERSE_SQRT_2) in validateOptions, e.g. min 200MiB with target 160MiB.

Common situations: Lowering target_sstable_size later without re-checking min_sstable_size; copying option sets from another table whose target size was much larger.

Understand the failure class

Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/33496c5d3494c31c. Report an issue: GitHub.