{"record":{"id":"3447e04dd0544f74","repo":"datahaven-xyz/datahaven","slug":"halted","errorCode":"Halted","errorMessage":"Halted","messagePattern":"Halted","errorType":"error_code","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"operator/pallets/ethereum-client/src/lib.rs","lineNumber":229,"sourceCode":"        ) -> DispatchResult {\n            ensure_root(origin)?;\n            Self::process_checkpoint_update(&update)?;\n            Ok(())\n        }\n\n        #[pallet::call_index(1)]\n        #[pallet::weight({\n\t\t\tmatch update.next_sync_committee_update {\n\t\t\t\tNone => T::WeightInfo::submit(),\n\t\t\t\tSome(_) => T::WeightInfo::submit_with_sync_committee(),\n\t\t\t}\n\t\t})]\n        #[transactional]\n        /// Submits a new finalized beacon header update. The update may contain the next\n        /// sync committee.\n        pub fn submit(origin: OriginFor<T>, update: Box<Update>) -> DispatchResultWithPostInfo {\n            ensure_signed(origin)?;\n            ensure!(!Self::operating_mode().is_halted(), Error::<T>::Halted);\n            Self::process_update(&update)\n        }\n\n        /// Halt or resume all pallet operations. May only be called by root.\n        #[pallet::call_index(3)]\n        #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))]\n        pub fn set_operating_mode(\n            origin: OriginFor<T>,\n            mode: BasicOperatingMode,\n        ) -> DispatchResult {\n            ensure_root(origin)?;\n            OperatingMode::<T>::set(mode);\n            Self::deposit_event(Event::OperatingModeChanged { mode });\n            Ok(())\n        }\n    }\n\n    impl<T: Config> Pallet<T> {","sourceCodeStart":211,"sourceCodeEnd":247,"githubUrl":"https://github.com/datahaven-xyz/datahaven/blob/edcb13dbbcd3c29489eaa2480a6f60ee4cb1f3ec/operator/pallets/ethereum-client/src/lib.rs#L211-L247","documentation":"The ethereum-client pallet is currently in a halted operating mode, so `submit` refuses all incoming finalized beacon header updates. This is a deliberate kill-switch (`operating_mode().is_halted()`) checked before any update processing, typically set by governance/root via `halt` to pause the light client during incidents or migrations. No update will be accepted until the pallet is resumed.","triggerScenarios":"Calling the `submit` extrinsic (call_index for `update: Box<Update>`) while `OperatingMode` is `Halted`; this happens after root dispatched the halt extrinsic (call_index 3) or when the pallet was deployed with halted as its initial mode.","commonSituations":"An incident response has frozen the bridge/light client; a chain upgrade re-deployed the pallet in halted state; operators submit updates during a maintenance window without checking the pallet mode first.","solutions":["Check the pallet operating mode before submitting: read `OperatingMode::<T>::get()` and only submit if it is not halted.","If you are root/governance, dispatch the halt/resume extrinsic (call_index 3) with `OperatingMode::Normal` to resume operations, then retry `submit`.","Coordinate with the protocol team — the halt is usually intentional; do not bypass it.","If the pallet started halted unexpectedly, verify the runtime/genesis configuration for the initial operating mode."],"exampleFix":"// before\n pallet.submit(update).unwrap();\n// after\n ensure!(pallet.operating_mode() != OperatingMode::Halted, \"client halted; wait for resume\");\n pallet.submit(update)?;","handlingStrategy":"validation","validationCode":"let mode = api.query.ethereumClient.operatingMode();\nif (mode.isHalted) throw new Error('ethereum-client halted; submission blocked');","typeGuard":"function isOperational(mode) { return mode.type === 'Normal'; }","tryCatchPattern":"try { await submit(update); } catch (e) { if (e.includes('Halted')) { pauseRelayer(); } else throw e; }","preventionTips":["Read OperatingMode before every submit","Subscribe to operating-mode change events","Pause relayers during known maintenance/halt windows"],"tags":["substrate","frame-pallet","governance-halt","beacon-light-client"],"backgroundTag":"operation-not-supported","analyzedSha":"edcb13dbbcd3c29489eaa2480a6f60ee4cb1f3ec","analyzedAt":"2026-09-13T19:19:32.206Z","contentChangedAt":"2026-09-13T19:19:32.206Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}