Bootstrapping implementation

This commit is contained in:
Maurus Decimus
2026-04-17 20:02:06 +02:00
parent c9b2c7c6f3
commit 95d1268308
100 changed files with 73102 additions and 1252 deletions

View File

@@ -34,7 +34,7 @@ sha2 = "0.11"
reqwest = { version = "0.13", default-features = false, features = ["rustls", "http2"]}
base64 = "0.22"
compact_str = "0.9.0"
dns-update = { path = "/Users/me/code/dns-update" }
dns-update = { version = "0.2.0" }
[dev-dependencies]

View File

@@ -17,7 +17,7 @@ use trc::{ClusterEvent, ServerEvent};
pub fn spawn_broadcast_subscriber(inner: Arc<Inner>, mut shutdown_rx: watch::Receiver<bool>) {
let this_node_id = {
let _core = inner.shared_core.load();
if _core.storage.coordinator.is_none() {
if _core.storage.coordinator.is_none() || _core.storage.registry.is_recovery_mode() {
return;
}
_core.network.node_id as u16

View File

@@ -28,32 +28,37 @@ pub trait SpawnServices {
impl StartServices for BootManager {
async fn start_services(&mut self) {
let server = self.inner.build_server();
// Unpack webadmin
self.inner
.data
.applications
.unpack_all(&self.inner.build_server(), false)
.unpack_all(&server, false)
.await;
self.ipc_rxs.spawn_services(self.inner.clone());
if !server.registry().is_recovery_mode() {
self.ipc_rxs.spawn_services(self.inner.clone());
}
}
}
impl SpawnServices for IpcReceivers {
fn spawn_services(&mut self, inner: Arc<Inner>) {
// Spawn push manager
spawn_push_router(inner.clone(), self.push_rx.take().unwrap());
if !inner.shared_core.load().storage.registry.is_recovery_mode() {
// Spawn push manager
spawn_push_router(inner.clone(), self.push_rx.take().unwrap());
// Spawn broadcast publisher
if let Some(event_rx) = self.broadcast_rx.take() {
// Spawn broadcast publisher
spawn_broadcast_publisher(inner.clone(), event_rx);
if let Some(event_rx) = self.broadcast_rx.take() {
// Spawn broadcast publisher
spawn_broadcast_publisher(inner.clone(), event_rx);
}
// Spawn task manager
spawn_task_manager(inner.clone());
// Spawn task scheduler
spawn_task_scheduler(inner);
}
// Spawn task manager
spawn_task_manager(inner.clone());
// Spawn task scheduler
spawn_task_scheduler(inner);
}
}

View File

@@ -530,8 +530,7 @@ pub async fn build_itip_template(
CalendarTemplateVariable::Key,
locale.calendar_imip_footer_2.to_string(),
)],
]
.into_iter(),
],
);
Details {

View File

@@ -491,7 +491,7 @@ async fn update_tasks(
) {
let mut batch = BatchBuilder::new();
for (task, result) in tasks.iter_mut().zip(results.into_iter()) {
for (task, result) in tasks.iter_mut().zip(results) {
let id = task.info.id;
batch.clear(ValueClass::TaskQueue(TaskQueueClass::Due {
id,