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
- Send writes to a node running in ingest/write-capable mode instead
- Fix the load balancer/client config to route writes to ingest nodes
- Reconfigure/restart the target server with write capability if it should accept writes
- 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
- Separate ingest vs compactor endpoints in client config
- Configure load balancers to route write traffic only to ingest nodes
- Document server roles so operators don't point writers at compactors
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
- An unexpected error occurred in the client library
- base URL error
- Cannot parse object store config
- Cannot write
- cannot write to soft-deleted database
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)