influxdata/influxdb · error · Error

cannot write to a compactor-only server

Error message

cannot write to a compactor-only server

What it means

This error is returned when a write request is sent to a server started in compactor-only mode. Compactor-only servers run solely background compaction and do not accept ingests by design, so any write is rejected up front.

Solutions

  1. Send writes to a node running in ingest/write-capable mode instead
  2. Fix the load balancer/client config to route writes to ingest nodes
  3. Reconfigure/restart the target server with write capability if it should accept writes
  4. Verify server role configuration before deploying clients

Example fix

// before
let client = InfluxDb3Client::new("http://compactor-node:8181");
// after
let client = InfluxDb3Client::new("http://ingest-node:8181");
Defensive patterns

Strategy: validation

Validate before calling

// verify the target node accepts writes before sending
capabilities, _ := http.Get(nodeUrl + "/health")
// only route writes to nodes whose role includes ingest

Try / catch

match buffer.write(db, lines) {
    Err(WriteBufferError::NoWriteInCompactorOnly) => {
        eprintln!("target is compactor-only; route writes to an ingest node");
    }
    other => other?,
}

Prevention

When it happens

Trigger: Pointing a writer/telegraf/HTTP client at a node launched with a compactor-only configuration (processing-engine/server roles where write ingestion is disabled).

Common situations: Misconfigured client pointing at the wrong node in a clustered deployment; load balancer routing write traffic to compactor nodes; forgetting to change the server role after repurposing a node.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/568d9960b60650c4. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_write/src/write_buffer/mod.rs:140

        table_name: Arc<str>,
    },

    #[error("tried accessing column with name ({0}) that does not exist")]
    ColumnDoesNotExist(String),

    #[error(
        "updating catalog on delete of last cache failed, you will need to delete the cache \
        again on server restart"
    )]
    DeleteLastCache(#[source] CatalogError),

    #[error("error from wal: {0}")]
    WalError(#[from] influxdb3_wal::Error),

    #[error("error in distinct value cache: {0}")]
    DistinctCacheError(#[from] distinct_cache::ProviderError),

    #[error("cannot write to a compactor-only server")]
    NoWriteInCompactorOnly,

    #[error("error: {0}")]
    AnyhowError(#[from] anyhow::Error),

    #[error("write not allowed on internal database")]
    InternalDbWriteNotAllowed,
}

pub type Result<T, E = Error> = std::result::Result<T, E>;

#[derive(Debug)]
pub struct WriteRequest<'a> {
    pub db_name: DatabaseName,
    pub line_protocol: &'a str,
    pub default_time: u64,
}

View on GitHub (pinned to 06200ef96b)