mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 18:41:05 +00:00
pallet-scheduler: Unrequest call on failed lookup (#3849)
When the scheduler fails to lookup a `call`, it should unrequest it, because it will not be required anymore.
This commit is contained in:
@@ -1267,6 +1267,17 @@ impl<T: Config> Pallet<T> {
|
||||
id: task.maybe_id,
|
||||
});
|
||||
|
||||
// It was not available when we needed it, so we don't need to have requested it
|
||||
// anymore.
|
||||
T::Preimages::drop(&task.call);
|
||||
|
||||
// We don't know why `peek` failed, thus we most account here for the "full weight".
|
||||
let _ = weight.try_consume(T::WeightInfo::service_task(
|
||||
task.call.lookup_len().map(|x| x as usize),
|
||||
task.maybe_id.is_some(),
|
||||
task.maybe_periodic.is_some(),
|
||||
));
|
||||
|
||||
return Err((Unavailable, Some(task)))
|
||||
},
|
||||
};
|
||||
|
||||
@@ -3008,6 +3008,8 @@ fn unavailable_call_is_detected() {
|
||||
|
||||
// Ensure the preimage isn't available
|
||||
assert!(!Preimage::have(&bound));
|
||||
// But we have requested it
|
||||
assert!(Preimage::is_requested(&hash));
|
||||
|
||||
// Executes in block 4.
|
||||
run_to_block(4);
|
||||
@@ -3016,5 +3018,7 @@ fn unavailable_call_is_detected() {
|
||||
System::events().last().unwrap().event,
|
||||
crate::Event::CallUnavailable { task: (4, 0), id: Some(name) }.into()
|
||||
);
|
||||
// It should not be requested anymore.
|
||||
assert!(!Preimage::is_requested(&hash));
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user