(state: std::sync::Arc<crate::ServerState>, interval: Duration)
| 681 | } |
| 682 | |
| 683 | pub fn spawn_refresh_worker(state: std::sync::Arc<crate::ServerState>, interval: Duration) { |
| 684 | info!( |
| 685 | interval_seconds = interval.as_secs(), |
| 686 | "provider credential refresh worker started" |
| 687 | ); |
| 688 | tokio::spawn(async move { |
| 689 | let mut ticker = tokio::time::interval(interval); |
| 690 | ticker.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay); |
| 691 | loop { |
| 692 | ticker.tick().await; |
| 693 | if let Err(err) = run_refresh_worker_tick(state.store.as_ref()).await { |
| 694 | warn!(error = %err, "provider credential refresh worker tick failed"); |
| 695 | } |
| 696 | } |
| 697 | }); |
| 698 | } |
| 699 | |
| 700 | async fn run_refresh_worker_tick(store: &Store) -> Result<(), Status> { |
| 701 | let now_ms = current_time_ms(); |
no test coverage detected