apache/cassandra · error · IllegalArgumentException

%s property contains an item which is not in format 'keyspac

Error message

%s property contains an item which is not in format 'keyspace' or 'keyspace.table' but it is '%s'

What it means

While parsing the cassandra.commitlog_replay_list in CommitLogReplayer.create, each entry is split on '.'. An entry producing more than two parts is neither a bare keyspace nor a keyspace.table pair, so IllegalArgumentException '%s property contains an item which is not in format keyspace or keyspace.table but it is %s' is thrown, naming the property key and the offending item.

Source

Thrown at src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java:411

         * */
        public static ReplayFilter create()
        {
            String replayList = COMMIT_LOG_REPLAY_LIST.getString();

            if (replayList == null)
                return new AlwaysReplayFilter();

            Multimap<String, String> toReplay = HashMultimap.create();
            for (String rawPair : replayList.split(","))
            {
                String trimmedRawPair = rawPair.trim();
                if (trimmedRawPair.isEmpty() || trimmedRawPair.endsWith("."))
                    throw new IllegalArgumentException(format("Invalid pair: '%s'", trimmedRawPair));

                String[] pair = StringUtils.split(trimmedRawPair, '.');

                if (pair.length > 2)
                    throw new IllegalArgumentException(format("%s property contains an item which " +
                                                              "is not in format 'keyspace' or 'keyspace.table' " +
                                                              "but it is '%s'",
                                                              COMMIT_LOG_REPLAY_LIST.getKey(),
                                                              String.join(".", pair)));

                String keyspaceName = pair[0];

                Keyspace ks = Schema.instance.getKeyspaceInstance(keyspaceName);
                if (ks == null)
                    throw new IllegalArgumentException("Unknown keyspace " + keyspaceName);

                if (pair.length == 1)
                {
                    for (ColumnFamilyStore cfs : ks.getColumnFamilyStores())
                        toReplay.put(keyspaceName, cfs.name);
                }
                else
                {

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Correct the entry to 'keyspace' or 'keyspace.table' — remove any extra dot-separated components.
  2. If the table name itself contains a dot, quote/rename it at the schema level or filter by keyspace instead.
  3. Regenerate the replay list from schema metadata (system_schema.tables) to avoid typos.
  4. Validate each item with a regex '^[^.]+(\.[^.]+)?$' before setting the system property.

Example fix

// before
-Dcassandra.commitlog_replay_list=ks1.tbl1.extra  // IllegalArgumentException
// after
-Dcassandra.commitlog_replay_list=ks1.tbl1
Defensive patterns

Strategy: validation

Validate before calling

for (String item : replayList.split(",")) {
    String t = item.trim();
    if (t.chars().filter(c -> c == '.').count() > 1)
        throw new IllegalArgumentException("Replay list item must be keyspace or keyspace.table: " + t);
}

Try / catch

try { CommitLogReplayer.create(...); } catch (IllegalArgumentException e) { logger.error("Bad replay item: {}", e.getMessage()); }

Prevention

When it happens

Trigger: cassandra.commitlog_replay_list containing an item with more than one dot, e.g. 'ks1.tbl1.extra' or a fully-qualified identifier mistakenly pasted into the list.

Common situations: Operators pasting fully-qualified names (e.g. 'myks.mytable@dc1' or 'ks.tbl.1234'), or tools appending suffixes to table names when generating the property.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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