mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
fix ntp sync status check daemon (#2528)
This commit is contained in:
@@ -4,6 +4,7 @@ use std::ops::Deref;
|
|||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
use helpers::to_tmp_path;
|
use helpers::to_tmp_path;
|
||||||
use josekit::jwk::Jwk;
|
use josekit::jwk::Jwk;
|
||||||
@@ -25,7 +26,7 @@ use crate::db::model::{CurrentDependents, Database, PackageDataEntryMatchModelRe
|
|||||||
use crate::db::prelude::PatchDbExt;
|
use crate::db::prelude::PatchDbExt;
|
||||||
use crate::dependencies::compute_dependency_config_errs;
|
use crate::dependencies::compute_dependency_config_errs;
|
||||||
use crate::disk::OsPartitionInfo;
|
use crate::disk::OsPartitionInfo;
|
||||||
use crate::init::init_postgres;
|
use crate::init::{check_time_is_synchronized, init_postgres};
|
||||||
use crate::install::cleanup::{cleanup_failed, uninstall};
|
use crate::install::cleanup::{cleanup_failed, uninstall};
|
||||||
use crate::manager::ManagerMap;
|
use crate::manager::ManagerMap;
|
||||||
use crate::middleware::auth::HashSessionToken;
|
use crate::middleware::auth::HashSessionToken;
|
||||||
@@ -174,6 +175,19 @@ impl RpcContext {
|
|||||||
let tor_proxy_url = format!("socks5h://{tor_proxy}");
|
let tor_proxy_url = format!("socks5h://{tor_proxy}");
|
||||||
let devices = lshw().await?;
|
let devices = lshw().await?;
|
||||||
let ram = get_mem_info().await?.total.0 as u64 * 1024 * 1024;
|
let ram = get_mem_info().await?.total.0 as u64 * 1024 * 1024;
|
||||||
|
|
||||||
|
if !db.peek().await.as_server_info().as_ntp_synced().de()? {
|
||||||
|
let db = db.clone();
|
||||||
|
tokio::spawn(async move {
|
||||||
|
while !check_time_is_synchronized().await.unwrap() {
|
||||||
|
tokio::time::sleep(Duration::from_secs(30)).await;
|
||||||
|
}
|
||||||
|
db.mutate(|v| v.as_server_info_mut().as_ntp_synced_mut().ser(&true))
|
||||||
|
.await
|
||||||
|
.unwrap()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
let seed = Arc::new(RpcContextSeed {
|
let seed = Arc::new(RpcContextSeed {
|
||||||
is_closed: AtomicBool::new(false),
|
is_closed: AtomicBool::new(false),
|
||||||
datadir: base.datadir().to_path_buf(),
|
datadir: base.datadir().to_path_buf(),
|
||||||
|
|||||||
@@ -342,6 +342,7 @@ pub async fn init(cfg: &RpcContextConfig) -> Result<InitResult, Error> {
|
|||||||
.arg("run")
|
.arg("run")
|
||||||
.arg("-d")
|
.arg("-d")
|
||||||
.arg("--rm")
|
.arg("--rm")
|
||||||
|
.arg("--init")
|
||||||
.arg("--network=start9")
|
.arg("--network=start9")
|
||||||
.arg("--name=netdummy")
|
.arg("--name=netdummy")
|
||||||
.arg("start9/x_system/utils:latest")
|
.arg("start9/x_system/utils:latest")
|
||||||
@@ -379,11 +380,11 @@ pub async fn init(cfg: &RpcContextConfig) -> Result<InitResult, Error> {
|
|||||||
tracing::info!("Set CPU Governor");
|
tracing::info!("Set CPU Governor");
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut time_not_synced = true;
|
server_info.ntp_synced = false;
|
||||||
let mut not_made_progress = 0u32;
|
let mut not_made_progress = 0u32;
|
||||||
for _ in 0..1800 {
|
for _ in 0..1800 {
|
||||||
if check_time_is_synchronized().await? {
|
if check_time_is_synchronized().await? {
|
||||||
time_not_synced = false;
|
server_info.ntp_synced = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
let t = SystemTime::now();
|
let t = SystemTime::now();
|
||||||
@@ -400,7 +401,7 @@ pub async fn init(cfg: &RpcContextConfig) -> Result<InitResult, Error> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if time_not_synced {
|
if !server_info.ntp_synced {
|
||||||
tracing::warn!("Timed out waiting for system time to synchronize");
|
tracing::warn!("Timed out waiting for system time to synchronize");
|
||||||
} else {
|
} else {
|
||||||
tracing::info!("Syncronized system clock");
|
tracing::info!("Syncronized system clock");
|
||||||
@@ -418,21 +419,6 @@ pub async fn init(cfg: &RpcContextConfig) -> Result<InitResult, Error> {
|
|||||||
restarting: false,
|
restarting: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
server_info.ntp_synced = if time_not_synced {
|
|
||||||
let db = db.clone();
|
|
||||||
tokio::spawn(async move {
|
|
||||||
while !check_time_is_synchronized().await.unwrap() {
|
|
||||||
tokio::time::sleep(Duration::from_secs(30)).await;
|
|
||||||
}
|
|
||||||
db.mutate(|v| v.as_server_info_mut().as_ntp_synced_mut().ser(&true))
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
});
|
|
||||||
false
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
};
|
|
||||||
|
|
||||||
db.mutate(|v| {
|
db.mutate(|v| {
|
||||||
v.as_server_info_mut().ser(&server_info)?;
|
v.as_server_info_mut().ser(&server_info)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user