From 726a4790252d68c5d108c4e95b902b1ae3ab0037 Mon Sep 17 00:00:00 2001 From: "Aode (Lion)" Date: Mon, 17 Jan 2022 17:57:06 -0600 Subject: [PATCH] Remove direct dependency on time --- Cargo.lock | 1 - Cargo.toml | 1 - src/requests.rs | 26 +++++++++++++++----------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2b369af..fa34299 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -339,7 +339,6 @@ dependencies = [ "sled", "structopt", "thiserror", - "time 0.3.5", "toml", "tracing", "tracing-actix-web", diff --git a/Cargo.toml b/Cargo.toml index 2ad175f..63f1029 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,6 @@ sha2 = "0.10" sled = "0.34.6" structopt = "0.3.12" thiserror = "1.0" -time = "0.3.5" tracing = "0.1" tracing-awc = { version = "0.1.0-beta.10" } tracing-error = "0.2" diff --git a/src/requests.rs b/src/requests.rs index 83f68d6..c2e699d 100644 --- a/src/requests.rs +++ b/src/requests.rs @@ -13,12 +13,16 @@ use std::{ atomic::{AtomicUsize, Ordering}, Arc, }, - time::SystemTime, + time::{Duration, SystemTime}, }; -use time::OffsetDateTime; use tracing::{debug, info, warn}; use tracing_awc::Tracing; +const ONE_SECOND: u64 = 1; +const ONE_MINUTE: u64 = 60 * ONE_SECOND; +const ONE_HOUR: u64 = 60 * ONE_MINUTE; +const ONE_DAY: u64 = 24 * ONE_HOUR; + #[derive(Clone)] pub(crate) struct Breakers { inner: Arc>, @@ -91,8 +95,8 @@ impl Default for Breakers { #[derive(Debug)] struct Breaker { failures: usize, - last_attempt: OffsetDateTime, - last_success: OffsetDateTime, + last_attempt: SystemTime, + last_success: SystemTime, } impl Breaker { @@ -100,30 +104,30 @@ impl Breaker { 10 } - fn failure_wait() -> time::Duration { - time::Duration::days(1) + fn failure_wait() -> Duration { + Duration::from_secs(ONE_DAY) } fn should_try(&self) -> bool { self.failures < Self::failure_threshold() - || self.last_attempt + Self::failure_wait() < OffsetDateTime::now_utc() + || self.last_attempt + Self::failure_wait() < SystemTime::now() } fn fail(&mut self) { self.failures += 1; - self.last_attempt = OffsetDateTime::now_utc(); + self.last_attempt = SystemTime::now(); } fn succeed(&mut self) { self.failures = 0; - self.last_attempt = OffsetDateTime::now_utc(); - self.last_success = OffsetDateTime::now_utc(); + self.last_attempt = SystemTime::now(); + self.last_success = SystemTime::now(); } } impl Default for Breaker { fn default() -> Self { - let now = OffsetDateTime::now_utc(); + let now = SystemTime::now(); Breaker { failures: 0,