apache/cassandra · warning

Write to . partition …

Error message

Write to %s.%s partition %s: %s (WriteWarningsSnapshot.writeSizeWarnMessage(value))

What it means

CoordinatorWriteWarnings.processWarnings() reports per-table write-size warnings aggregated from replicas. When a written partition value exceeded the write-size warning threshold, a message 'Write to <ks>.<table> partition <key>: <detail>' is sent as a client warning, logged, and writeSizeWarnings metric is incremented. The write succeeded but was unusually large.

Solutions

  1. Redesign the schema to split large partitions (bucketing keys, time buckets)
  2. Cap row/collection sizes at the application layer before writing
  3. Raise the write-size warning threshold in cassandra.yaml only deliberately
  4. Inspect the warning's partition key to find and fix the offending writer

Example fix

// before: one partition per user grows forever
INSERT INTO events (user_id, ts, payload) VALUES (?, ?, ?);
// after: bucket by day
INSERT INTO events_by_day (user_id, day, ts, payload) VALUES (?, ?, ?, ?);
Defensive patterns

Strategy: validation

Validate before calling

// application-side partition size guard
if (estimatePartitionBytes(key) + pendingWriteBytes > writeSizeWarnThreshold)
    throw new IllegalStateException("write would exceed partition size warning threshold for " + key);

Try / catch

ResultSet rs = session.execute(write);
for (String w : rs.getExecutionInfo().getWarnings())
    if (w.startsWith("Write to ")) partitionSizer.alert(w);

Prevention

When it happens

Trigger: Mutations whose partition value (data written to a single partition key) exceeded the write_size warning threshold; the coordinator's next processWarnings call formats the message and warns the client.

Common situations: Unbounded partition growth (e.g. time-series rows never partitioned); very large blobs/collections in one partition; batch writes inflating partition size.

Understand the failure class

Background: payload too large / request exceeds maximum size: why libraries cap bytes and how to fix oversize payloads — this error's family across 50 libraries.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/service/writes/thresholds/CoordinatorWriteWarnings.java:139

        for (Map.Entry<TableId, Long> entry : snapshot.writeSize.tableValues.entrySet())
        {
            TableId tableId = entry.getKey();
            ColumnFamilyStore cfs = Schema.instance.getColumnFamilyStoreInstance(tableId);
            if (cfs == null)
            {
                logger.warn("ColumnFamilyStore is null for table {}, skipping", tableId);
                continue;
            }

            TableMetadata metadata = cfs.metadata();
            String partitionKey = metadata.partitionKeyType.toCQLString(warnings.partitionKey.getKey());
            String msg = String.format("Write to %s.%s partition %s: %s",
                                       metadata.keyspace,
                                       metadata.name,
                                       partitionKey,
                                       WriteWarningsSnapshot.writeSizeWarnMessage(entry.getValue()));
            ClientWarn.instance.warn(msg);
            logger.warn(msg);
            cfs.metric.writeSizeWarnings.mark();
        }

        for (Map.Entry<TableId, Long> entry : snapshot.writeTombstone.tableValues.entrySet())
        {
            TableId tableId = entry.getKey();
            ColumnFamilyStore cfs = Schema.instance.getColumnFamilyStoreInstance(tableId);
            if (cfs == null)
            {
                logger.warn("ColumnFamilyStore is null for table {}, skipping", tableId);
                continue;
            }

            TableMetadata metadata = cfs.metadata();
            String partitionKey = metadata.partitionKeyType.toCQLString(warnings.partitionKey.getKey());
            String msg = String.format("Write to %s.%s partition %s: %s",
                                       metadata.keyspace,

View on GitHub (pinned to 88fd0f6a0e)