pub struct AcmeEarlyRetryTask {
pub tn_id: TnId,
pub acme_email: String,
pub id_tag: String,
pub app_domain: Option<String>,
}Expand description
One-shot retry of acme::init for a single tenant, scheduled by bootstrap
when the at-registration ACME attempt fails. Coordinated with the daily
CertRenewalTask only by the in-task read_cert_by_tn_id short-circuit:
each retry checks first whether a cert was installed since it was queued,
and if so exits without contacting the ACME directory.
Three of these are typically queued at 2 / 5 / 15-minute delays. They
survive process restart (unlike the previous tokio::spawn approach), and
the per-key dedup in the scheduler stops repeated bootstrap-failure events
from stacking duplicate retries on top of each other.
Fields§
§tn_id: TnId§acme_email: String§id_tag: String§app_domain: Option<String>Trait Implementations§
Source§impl Clone for AcmeEarlyRetryTask
impl Clone for AcmeEarlyRetryTask
Source§fn clone(&self) -> AcmeEarlyRetryTask
fn clone(&self) -> AcmeEarlyRetryTask
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AcmeEarlyRetryTask
impl Debug for AcmeEarlyRetryTask
Source§impl<'de> Deserialize<'de> for AcmeEarlyRetryTask
impl<'de> Deserialize<'de> for AcmeEarlyRetryTask
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for AcmeEarlyRetryTask
impl Serialize for AcmeEarlyRetryTask
Source§impl Task<Arc<AppState>> for AcmeEarlyRetryTask
impl Task<Arc<AppState>> for AcmeEarlyRetryTask
fn kind() -> &'static str
fn kind_of(&self) -> &'static str
fn build(_id: TaskId, context: &str) -> ClResult<Arc<dyn Task<App>>>
fn serialize(&self) -> String
fn run<'life0, 'life1, 'async_trait>(
&'life0 self,
app: &'life1 App,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn on_failed<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_state: &'life1 S,
_attempts: u16,
_last_error: &'life2 str,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_failed<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_state: &'life1 S,
_attempts: u16,
_last_error: &'life2 str,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called when the task transitions to
Failed after exhausting retries
(or on the very first failure when no retry policy is set). Lets the
task perform irreversible cleanup — e.g. mark a related domain row as
permanently failed — that should not happen on retryable failures.
Default: no-op.Auto Trait Implementations§
impl Freeze for AcmeEarlyRetryTask
impl RefUnwindSafe for AcmeEarlyRetryTask
impl Send for AcmeEarlyRetryTask
impl Sync for AcmeEarlyRetryTask
impl Unpin for AcmeEarlyRetryTask
impl UnsafeUnpin for AcmeEarlyRetryTask
impl UnwindSafe for AcmeEarlyRetryTask
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more