{"record":{"id":"59c5dd9bb68bb53c","repo":"FuelLabs/fuel-core","slug":"not-implemented-yet","errorCode":null,"errorMessage":"Not implemented yet","messagePattern":"Not implemented yet","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/services/parallel-executor/src/executor.rs","lineNumber":107,"sourceCode":"\n        Self {\n            _executor: Arc::new(RwLock::new(executor)),\n            runtime: Some(runtime),\n            _number_of_cores: number_of_cores,\n        }\n    }\n}\n\nimpl<S, R> Executor<S, R> {\n    /// Produces the block and returns the result of the execution without committing the changes.\n    pub async fn produce_without_commit_with_source<TxSource>(\n        &self,\n        _components: Components<TxSource>,\n    ) -> ExecutorResult<Uncommitted<ExecutionResult, Changes>>\n    where\n        TxSource: TransactionsSource + Send + Sync + 'static,\n    {\n        unimplemented!(\"Not implemented yet\");\n    }\n\n    pub fn validate(\n        &self,\n        _block: &Block,\n    ) -> ExecutorResult<Uncommitted<ValidationResult, Changes>> {\n        unimplemented!(\"Not implemented yet\");\n    }\n\n    #[cfg(feature = \"wasm-executor\")]\n    pub fn validate_uploaded_wasm(\n        &self,\n        _wasm_root: &Bytes32,\n    ) -> Result<(), UpgradableError> {\n        unimplemented!(\"Not implemented yet\");\n    }\n\n    /// Executes the block and returns the result of the execution without committing","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/FuelLabs/fuel-core/blob/b9d4d170da3a31c9ace5f963d633b326348e0d42/crates/services/parallel-executor/src/executor.rs#L89-L125","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before — panics with 'Not implemented yet'\nlet result = executor.produce_without_commit_with_source(components).await?;\n\n// after — use the upgradable executor that actually implements the API\nuse fuel_core_upgradable_executor::executor::Executor as UpgradableExecutor;\nlet result = upgradable_executor.produce_without_commit_with_source(components).await?;","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// unimplemented!() panics; only containable via catch_unwind (exploratory use only)\nuse std::panic::{catch_unwind, AssertUnwindSafe};\nlet outcome = catch_unwind(AssertUnwindSafe(|| {\n    // known-stub call; production code must not reach here\n    executor.produce_without_commit_with_source(components)\n}));\nlet result = outcome.unwrap_or_else(|_| {\n    // fall back to the upgradable executor\n    upgradable_executor.produce_without_commit(components)\n});","preventionTips":["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."],"tags":["rust","fuel-core","parallel-executor","unimplemented","panic","block-production"],"backgroundTag":null,"analyzedSha":"b9d4d170da3a31c9ace5f963d633b326348e0d42","analyzedAt":"2026-08-16T08:56:42.692Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}