feat: idempotent handlers, deterministic activity ids
This commit is contained in:
@@ -45,6 +45,17 @@ impl EventHandler for ImageConversionHandler {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// `get` falls back to `{key}.webp` / `{key}.avif`, which would re-encode
|
||||
// an already converted image on redelivery. Probe the exact key first:
|
||||
// once the original is gone, an earlier delivery finished the conversion.
|
||||
match self.storage.get_stream(&key).await {
|
||||
Ok(_) => {}
|
||||
Err(DomainError::NotFound(_)) => {
|
||||
tracing::debug!("original {key} already converted, skipping");
|
||||
return Ok(());
|
||||
}
|
||||
Err(e) => return Err(e),
|
||||
}
|
||||
let bytes = self.storage.get(&key).await?;
|
||||
let format = self.format;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user