diff --git a/substrate/client/db/src/lib.rs b/substrate/client/db/src/lib.rs index 549ef4012a73913a86fab875be18b7d1d9316e94..3b8936c0f7bacafc8dd418cf2166cde2b4836e4e 100644 --- a/substrate/client/db/src/lib.rs +++ b/substrate/client/db/src/lib.rs @@ -1076,13 +1076,14 @@ impl<T: Clone> FrozenForDuration<T> { F: FnOnce() -> T, { let mut lock = self.value.lock(); - if lock.at.elapsed() > self.duration || lock.value.is_none() { + let now = std::time::Instant::now(); + if now.saturating_duration_since(lock.at) > self.duration || lock.value.is_none() { let new_value = f(); - lock.at = std::time::Instant::now(); + lock.at = now; lock.value = Some(new_value.clone()); new_value } else { - lock.value.as_ref().expect("checked with lock above").clone() + lock.value.as_ref().expect("Checked with in branch above; qed").clone() } } }