diff --git a/core/startos/src/bins/startd.rs b/core/startos/src/bins/startd.rs index 25bf5ac52..8c1e77afb 100644 --- a/core/startos/src/bins/startd.rs +++ b/core/startos/src/bins/startd.rs @@ -132,8 +132,6 @@ async fn inner_main( .await?; rpc_ctx.shutdown().await?; - tracing::info!("RPC Context is dropped"); - Ok(shutdown) } diff --git a/core/startos/src/context/rpc.rs b/core/startos/src/context/rpc.rs index 5830b7950..4319f4209 100644 --- a/core/startos/src/context/rpc.rs +++ b/core/startos/src/context/rpc.rs @@ -76,6 +76,11 @@ pub struct RpcContextSeed { pub start_time: Instant, pub crons: SyncMutex>>, } +impl Drop for RpcContextSeed { + fn drop(&mut self) { + tracing::error!("RpcContext is dropped"); + } +} pub struct Hardware { pub devices: Vec, @@ -269,7 +274,7 @@ impl RpcContext { self.crons.mutate(|c| std::mem::take(c)); self.services.shutdown_all().await?; self.is_closed.store(true, Ordering::SeqCst); - tracing::info!("RPC Context is shutdown"); + tracing::info!("RpcContext is shutdown"); Ok(()) } diff --git a/core/startos/src/service/mod.rs b/core/startos/src/service/mod.rs index c3804fa01..d98f43379 100644 --- a/core/startos/src/service/mod.rs +++ b/core/startos/src/service/mod.rs @@ -15,12 +15,12 @@ use futures::future::BoxFuture; use futures::stream::FusedStream; use futures::{FutureExt, SinkExt, StreamExt, TryStreamExt}; use helpers::NonDetachingJoinHandle; -use imbl_value::{InternedString, json}; +use imbl_value::{json, InternedString}; use itertools::Itertools; use models::{ActionId, HostId, ImageId, PackageId}; use nix::sys::signal::Signal; use persistent_container::{PersistentContainer, Subcontainer}; -use rpc_toolkit::{CallRemoteHandler, Empty, HandlerArgs, HandlerFor, from_fn_async}; +use rpc_toolkit::{from_fn_async, CallRemoteHandler, Empty, HandlerArgs, HandlerFor}; use serde::{Deserialize, Serialize}; use service_actor::ServiceActor; use start_stop::StartStop; @@ -47,11 +47,11 @@ use crate::service::action::update_tasks; use crate::service::rpc::{ExitParams, InitKind}; use crate::service::service_map::InstallProgressHandles; use crate::service::uninstall::cleanup; -use crate::util::Never; use crate::util::actor::concurrent::ConcurrentActor; -use crate::util::io::{AsyncReadStream, TermSize, create_file, delete_file}; +use crate::util::io::{create_file, delete_file, AsyncReadStream, TermSize}; use crate::util::net::WebSocketExt; use crate::util::serde::Pem; +use crate::util::Never; use crate::volume::data_dir; use crate::{CAP_1_KiB, DATA_DIR}; diff --git a/core/startos/src/util/io.rs b/core/startos/src/util/io.rs index 0fc21f715..c55b6f92e 100644 --- a/core/startos/src/util/io.rs +++ b/core/startos/src/util/io.rs @@ -912,7 +912,7 @@ impl AsRef for TmpDir { } impl Drop for TmpDir { fn drop(&mut self) { - if self.path.exists() { + if self.path != PathBuf::new() && self.path.exists() { let path = std::mem::take(&mut self.path); tokio::spawn(async move { tokio::fs::remove_dir_all(&path).await.log_err(); diff --git a/image-recipe/build.sh b/image-recipe/build.sh index b3f3b597a..abbb71127 100755 --- a/image-recipe/build.sh +++ b/image-recipe/build.sh @@ -231,6 +231,8 @@ lb chroot lb installer lb binary_chroot lb chroot_prep install all mode-apt-install-binary mode-archives-chroot +echo "nameserver 127.0.0.1" > chroot/chroot/etc/resolv.conf +echo "nameserver 1.1.1.1" >> chroot/chroot/etc/resolv.conf # Cloudflare DNS Fallback lb binary_rootfs cp $prep_results_dir/binary/live/filesystem.squashfs $RESULTS_DIR/$IMAGE_BASENAME.squashfs