diff --git a/rust-arroyo/src/processing/strategies/healthcheck.rs b/rust-arroyo/src/processing/strategies/healthcheck.rs index 0dc1dd5c..a2a32c18 100644 --- a/rust-arroyo/src/processing/strategies/healthcheck.rs +++ b/rust-arroyo/src/processing/strategies/healthcheck.rs @@ -14,6 +14,7 @@ pub struct HealthCheck { path: PathBuf, interval: Duration, deadline: SystemTime, + iterations_since_last_submit: u64, } impl HealthCheck { @@ -26,6 +27,7 @@ impl HealthCheck { path: path.into(), interval, deadline, + iterations_since_last_submit: 0, } } @@ -50,12 +52,21 @@ where Next: ProcessingStrategy + 'static, { fn poll(&mut self) -> Result, StrategyError> { - self.maybe_touch_file(); + let poll_result = self.next_step.poll(); + if let Ok(Some(_commit_request)) = poll_result.as_ref() { + self.maybe_touch_file(); + } + + if self.iterations_since_last_submit > 0 { + self.maybe_touch_file(); + } - self.next_step.poll() + self.iterations_since_last_submit += 1; + poll_result } fn submit(&mut self, message: Message) -> Result<(), SubmitError> { + self.iterations_since_last_submit = 0; self.next_step.submit(message) }