use std::sync::Arc;
use chronon_scheduler::{run_coordinator_tick_loop, Scheduler};
use chronon_telemetry::TelemetrySink;
use tokio::sync::Notify;
pub async fn run_coordinator_loops(
scheduler: Arc<Scheduler>,
telemetry: Arc<dyn TelemetrySink>,
shutdown: Arc<Notify>,
) {
scheduler.init_partitions().await;
let assigner = scheduler.assigner();
let partition_shutdown = Arc::clone(&shutdown);
let partition_assigner = Arc::clone(&assigner);
tokio::spawn(async move {
partition_assigner.run_lease_loop(partition_shutdown).await;
});
run_coordinator_tick_loop(
scheduler.store(),
telemetry,
scheduler.instance_id().to_string(),
assigner,
shutdown,
)
.await;
}