FuelLabs/fuel-core · error
Not implemented yet
Error message
Not implemented yet
What it means
The parallel-executor crate's Executor wraps a working fuel_core_upgradable_executor::Executor (field _executor at crates/services/parallel-executor/src/executor.rs:41-45), but produce_without_commit_with_source is still a stub whose whole body is unimplemented!(). The crate compiles fine; the panic fires at runtime with 'Not implemented yet' as soon as the method is called, unwinding the thread instead of returning an ExecutorResult. The method mirrors the block-producer executor interface, so call sites ported from the standard executor will look correct but abort.
Source
Thrown at crates/services/parallel-executor/src/executor.rs:107
Self {
_executor: Arc::new(RwLock::new(executor)),
runtime: Some(runtime),
_number_of_cores: number_of_cores,
}
}
}
impl<S, R> Executor<S, R> {
/// Produces the block and returns the result of the execution without committing the changes.
pub async fn produce_without_commit_with_source<TxSource>(
&self,
_components: Components<TxSource>,
) -> ExecutorResult<Uncommitted<ExecutionResult, Changes>>
where
TxSource: TransactionsSource + Send + Sync + 'static,
{
unimplemented!("Not implemented yet");
}
pub fn validate(
&self,
_block: &Block,
) -> ExecutorResult<Uncommitted<ValidationResult, Changes>> {
unimplemented!("Not implemented yet");
}
#[cfg(feature = "wasm-executor")]
pub fn validate_uploaded_wasm(
&self,
_wasm_root: &Bytes32,
) -> Result<(), UpgradableError> {
unimplemented!("Not implemented yet");
}
/// Executes the block and returns the result of the execution without committingView on GitHub (pinned to b9d4d170da)
Solutions
- Route block production through fuel_core_upgradable_executor::executor::Executor (the very type held in _executor), which implements produce_without_commit_with_source.
- If you must keep this type, implement the method by delegating to the inner UpgradableExecutor behind its Arc<RwLock<..>>.
- Pin to the released fuel-core executor service and track the parallel-executor crate until its stubs are wired upstream.
- In exploratory code only, wrap the call in std::panic::catch_unwind to convert the panic into an error and fall back.
Example fix
// before — panics with 'Not implemented yet' let result = executor.produce_without_commit_with_source(components).await?; // after — use the upgradable executor that actually implements the API use fuel_core_upgradable_executor::executor::Executor as UpgradableExecutor; let result = upgradable_executor.produce_without_commit_with_source(components).await?;
Defensive patterns
Strategy: fallback
Try / catch
// unimplemented!() panics; only containable via catch_unwind (exploratory use only)
use std::panic::{catch_unwind, AssertUnwindSafe};
let outcome = catch_unwind(AssertUnwindSafe(|| {
// known-stub call; production code must not reach here
executor.produce_without_commit_with_source(components)
}));
let result = outcome.unwrap_or_else(|_| {
// fall back to the upgradable executor
upgradable_executor.produce_without_commit(components)
}); Prevention
- Never call produce_without_commit_with_source on the parallel-executor's Executor; it is an unimplemented!() stub and panics.
- Route block production through fuel_core_upgradable_executor::Executor, which implements this API.
- Gate the parallel-executor behind an experimental feature flag so it cannot silently replace the working executor.
- Track upstream: the struct already wraps an UpgradableExecutor, so the stub may be wired at any release — retest before adopting.
When it happens
Trigger: Constructing Executor::new(storage_view_provider, relayer_view_provider, config) from the parallel-executor service and calling .produce_without_commit_with_source(components).await with any Components<TxSource> — the panic fires immediately, before any transaction is read.
Common situations: Swapping fuel-core's standard executor for the experimental parallel-executor in a custom node build or fork; porting block-production code that works against fuel_core_upgradable_executor onto this type; enabling a feature that routes production through this crate before its implementation landed.
Related errors
- The lock is poisoned: {}
- Missing code for contract: {id}
- Missing utxo for contract: {id}
- Missing column. Check the schema!
- No block height found
AI-assisted analysis of FuelLabs/fuel-core@b9d4d170da (2026-08-16).
Data as JSON: /api/errors/59c5dd9bb68bb53c.
Report an issue: GitHub.