···
sketch_secret: SketchSecretPrefix,
) -> anyhow::Result<()> {
+
let mut whatever_tasks: JoinSet<anyhow::Result<()>> = JoinSet::new();
+
let mut consumer_tasks: JoinSet<anyhow::Result<()>> = JoinSet::new();
println!("starting server with storage...");
let serving = server::serve(read_store.clone());
+
whatever_tasks.spawn(async move {
serving.await.map_err(|e| {
log::warn!("server ended: {e}");
···
log::info!("not starting jetstream or the write loop.");
+
for t in whatever_tasks.join_all().await {
return Err(anyhow::anyhow!(e));
···
let rolling = write_store
.background_tasks(args.reroll)?
+
consumer_tasks.spawn(async move {
.inspect_err(|e| log::warn!("rollup ended: {e}"))?;
+
consumer_tasks.spawn(async move {
.receive_batches(batches)
···
+
whatever_tasks.spawn(async move {
do_update_stuff(read_store).await;
log::warn!("status task ended");
···
install_metrics_server()?;
+
for (i, t) in consumer_tasks.join_all().await.iter().enumerate() {
log::warn!("task {i} done: {t:?}");
+
println!("consumer tasks all completed, killing the others");
+
whatever_tasks.shutdown().await;