FuelLabs/fuel-core · critical
The state of the service is not started: {state:?}
Error message
The state of the service is not started: {state:?} What it means
Service::from_combined_database builds a node from an existing CombinedDatabase, starts it, and awaits the state transition. If the resulting state is anything but Started (e.g. Stopped/Stopping), startup failed or a shutdown raced it, and this error is returned.
Source
Thrown at crates/fuel-core/src/service.rs:235
Default::default(),
Default::default(),
#[cfg(feature = "rpc")]
Default::default(),
);
Self::from_combined_database(combined_database, config).await
}
/// Creates and starts fuel node instance from service config and a pre-existing combined database
pub async fn from_combined_database(
combined_database: CombinedDatabase,
config: Config,
) -> anyhow::Result<Self> {
let mut listener = crate::ShutdownListener::spawn();
let service = Self::new(combined_database, config, &mut listener)?;
let state = service.start_and_await().await?;
if !state.started() {
return Err(anyhow::anyhow!(
"The state of the service is not started: {state:?}"
));
}
Ok(service)
}
#[cfg(feature = "relayer")]
/// Wait for the Relayer to be in sync with
/// the data availability layer.
///
/// Yields until the relayer reaches a point where it
/// considered up to date. Note that there's no guarantee
/// the relayer will ever catch up to the da layer and
/// may fall behind immediately after this future completes.
///
/// The only guarantee is that if this future completes then
/// the relayer did reach consistency with the da layer for
/// some period of time.View on GitHub (pinned to b9d4d170da)
Solutions
- Check node logs for the underlying subsystem failure that preceded the shutdown — this error is only the symptom
- Ensure the database files are compatible with this fuel-core version and not corrupted
- Avoid sending shutdown signals until start has completed; sequence startup fully before teardown
- Use Service::new + explicit start if you need to inspect the state machine yourself
Example fix
// before
let service = Service::from_combined_database(db, config).await?; // opaque failure
// after
let mut listener = ShutdownListener::spawn();
let service = Service::new(db, config, &mut listener)?;
let state = service.start_and_await().await?;
tracing::info!(?state, "node state"); // inspect why it is not Started
if !state.started() { /* inspect logs / handle */ } Defensive patterns
Strategy: try-catch
Validate before calling
// Rust embedder: pre-flight the pieces start() needs
fn preflight(db: &CombinedDatabase, config: &Config) -> anyhow::Result<()> {
db.on_chain().latest_view()?; // DB readable
ensure_free_port(&config.graphql_config.addr)?;
Ok(())
} Try / catch
match Service::from_combined_database(db, config).await { Err(e) if e.to_string().contains("state of the service is not started") => { /* scan logs for the failing subsystem; verify DB compatibility; do not resend shutdown early */ } r => r } Prevention
- This error is a symptom — always inspect the subsystem error logged just before it
- Verify the CombinedDatabase was produced by a compatible fuel-core version
- Sequence shutdown strictly after startup completes
- Prefer Service::new + start_and_await when you need to observe intermediate states
When it happens
Trigger: Embedding fuel-core and calling from_combined_database when a subsystem fails during start (bad DB, port conflicts, misconfigured relayer) or when a shutdown signal arrives while start_and_await is pending — the service settles into a non-Started state.
Common situations: Custom node binaries reusing a database; CI tests that trigger shutdown early; a failing component (relayer, compression, gas price service) that stops the runner during boot; version mismatch between stored DB state and binary.
Related errors
- The consensus at override height {override_height} is not Po
- The override height is zero. The override height should be g
- The genesis block height is not found in the database during
- on-chain database doesn't have height
- off-chain database doesn't have height
AI-assisted analysis of FuelLabs/fuel-core@b9d4d170da (2026-08-16).
Data as JSON: /api/errors/f80699f70f01e318.
Report an issue: GitHub.