diff --git a/Cargo.lock b/Cargo.lock index fe9bc518..cb857d83 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2251,6 +2251,17 @@ dependencies = [ name = "kumo-server-common" version = "0.1.0" +[[package]] +name = "kumo-server-lifecycle" +version = "0.1.0" +dependencies = [ + "anyhow", + "once_cell", + "tokio", + "tracing", + "uuid", +] + [[package]] name = "kumo-server-memory" version = "0.1.0" @@ -2313,6 +2324,7 @@ dependencies = [ "kumo-api-types", "kumo-log-types", "kumo-server-common", + "kumo-server-lifecycle", "kumo-server-memory", "kumo-server-runtime", "lazy_static", diff --git a/crates/kumo-server-lifecycle/Cargo.toml b/crates/kumo-server-lifecycle/Cargo.toml new file mode 100644 index 00000000..a4ba4ee4 --- /dev/null +++ b/crates/kumo-server-lifecycle/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "kumo-server-lifecycle" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +anyhow = "1.0" +tracing = "0.1" +tokio = {version="1.25", features=["full", "tracing"]} +once_cell = "1.17" +uuid = {version="1.3", features=["v4", "fast-rng"]} diff --git a/crates/kumod/src/lifecycle.rs b/crates/kumo-server-lifecycle/src/lib.rs similarity index 100% rename from crates/kumod/src/lifecycle.rs rename to crates/kumo-server-lifecycle/src/lib.rs diff --git a/crates/kumod/Cargo.toml b/crates/kumod/Cargo.toml index 50d62b56..8ac21912 100644 --- a/crates/kumod/Cargo.toml +++ b/crates/kumod/Cargo.toml @@ -34,6 +34,7 @@ json_comments = "0.2" kumo-api-types = {path="../kumo-api-types"} kumo-log-types = {path="../kumo-log-types"} kumo-server-common = {path="../kumo-server-common"} +kumo-server-lifecycle = {path="../kumo-server-lifecycle"} kumo-server-memory = {path="../kumo-server-memory"} kumo-server-runtime = {path="../kumo-server-runtime"} lazy_static = "1.4" diff --git a/crates/kumod/src/main.rs b/crates/kumod/src/main.rs index 057dd9fe..aa4dd144 100644 --- a/crates/kumod/src/main.rs +++ b/crates/kumod/src/main.rs @@ -1,7 +1,7 @@ -use crate::lifecycle::LifeCycle; use anyhow::Context; use caps::{CapSet, Capability, CapsHashSet}; use clap::{Parser, ValueEnum}; +use kumo_server_lifecycle::LifeCycle; use kumo_server_runtime::rt_spawn; use metrics_prometheus::recorder::Layer as _; use nix::sys::resource::{getrlimit, setrlimit, Resource}; @@ -36,7 +36,6 @@ mod delivery_metrics; mod egress_path; mod egress_source; mod http_server; -mod lifecycle; mod logging; mod lua_deliver; mod metrics_helper; diff --git a/crates/kumod/src/mod_kumo.rs b/crates/kumod/src/mod_kumo.rs index 1aeba66f..b4781a34 100644 --- a/crates/kumod/src/mod_kumo.rs +++ b/crates/kumod/src/mod_kumo.rs @@ -1,12 +1,12 @@ use crate::egress_path::EgressPathConfig; use crate::egress_source::{EgressPool, EgressSource}; use crate::http_server::HttpListenerParams; -use crate::lifecycle::LifeCycle; use crate::logging::{ClassifierParams, LogFileParams, LogHookParams}; use crate::queue::QueueConfig; use crate::smtp_server::{EsmtpDomain, EsmtpListenerParams, RejectError}; use anyhow::Context; use config::{any_err, from_lua_value, get_or_create_module}; +use kumo_server_lifecycle::LifeCycle; use kumo_server_runtime::spawn; use mlua::{Function, Lua, LuaSerdeExt, Value}; use mod_redis::RedisConnKey; diff --git a/crates/kumod/src/queue.rs b/crates/kumod/src/queue.rs index cc007b3f..ba08907d 100644 --- a/crates/kumod/src/queue.rs +++ b/crates/kumod/src/queue.rs @@ -1,7 +1,6 @@ use crate::egress_source::{EgressPool, EgressPoolRoundRobin, RoundRobinResult}; use crate::http_server::admin_bounce_v1::AdminBounceEntry; use crate::http_server::admin_suspend_v1::AdminSuspendEntry; -use crate::lifecycle::{Activity, ShutdownSubcription}; use crate::logging::{log_disposition, LogDisposition, RecordType}; use crate::lua_deliver::LuaDeliveryProtocol; use crate::ready_queue::ReadyQueueManager; @@ -9,6 +8,7 @@ use crate::spool::SpoolManager; use anyhow::Context; use chrono::Utc; use config::load_config; +use kumo_server_lifecycle::{Activity, ShutdownSubcription}; use kumo_server_runtime::{rt_spawn, spawn, spawn_blocking}; use message::message::QueueNameComponents; use message::Message; diff --git a/crates/kumod/src/ready_queue.rs b/crates/kumod/src/ready_queue.rs index 2a74198a..60ebbc74 100644 --- a/crates/kumod/src/ready_queue.rs +++ b/crates/kumod/src/ready_queue.rs @@ -3,7 +3,6 @@ use crate::egress_path::EgressPathConfig; use crate::egress_source::EgressSource; use crate::http_server::admin_bounce_v1::AdminBounceEntry; use crate::http_server::admin_suspend_ready_q_v1::AdminSuspendReadyQEntry; -use crate::lifecycle::{Activity, ShutdownSubcription}; use crate::logging::{log_disposition, LogDisposition, RecordType}; use crate::lua_deliver::LuaQueueDispatcher; use crate::queue::{DeliveryProto, Queue, QueueConfig, QueueManager}; @@ -13,6 +12,7 @@ use anyhow::Context; use async_trait::async_trait; use config::load_config; use dns_resolver::MailExchanger; +use kumo_server_lifecycle::{Activity, ShutdownSubcription}; use kumo_server_memory::{get_headroom, low_memory, subscribe_to_memory_status_changes}; use kumo_server_runtime::{rt_spawn, rt_spawn_non_blocking, spawn}; use message::message::QueueNameComponents; diff --git a/crates/kumod/src/smtp_dispatcher.rs b/crates/kumod/src/smtp_dispatcher.rs index 7949c05a..d98869f7 100644 --- a/crates/kumod/src/smtp_dispatcher.rs +++ b/crates/kumod/src/smtp_dispatcher.rs @@ -1,6 +1,5 @@ use crate::delivery_metrics::MetricsWrappedConnection; use crate::egress_path::Tls; -use crate::lifecycle::ShutdownSubcription; use crate::logging::{log_disposition, LogDisposition, RecordType}; use crate::ready_queue::{Dispatcher, QueueDispatcher}; use crate::spool::SpoolManager; @@ -8,6 +7,7 @@ use anyhow::Context; use async_trait::async_trait; use dns_resolver::ResolvedMxAddresses; use kumo_log_types::ResolvedAddress; +use kumo_server_lifecycle::ShutdownSubcription; use kumo_server_runtime::{rt_spawn, spawn}; use message::Message; use rfc5321::{ClientError, EnhancedStatusCode, ForwardPath, Response, ReversePath, SmtpClient}; diff --git a/crates/kumod/src/smtp_server.rs b/crates/kumod/src/smtp_server.rs index 16f82ab8..54f4981d 100644 --- a/crates/kumod/src/smtp_server.rs +++ b/crates/kumod/src/smtp_server.rs @@ -1,4 +1,3 @@ -use crate::lifecycle::{Activity, ShutdownSubcription}; use crate::logging::{log_disposition, LogDisposition, RecordType}; use crate::queue::QueueManager; use crate::spool::SpoolManager; @@ -8,6 +7,7 @@ use cidr_map::{AnyIpCidr, CidrSet}; use config::{any_err, load_config, LuaConfig}; use data_loader::KeySource; use kumo_log_types::ResolvedAddress; +use kumo_server_lifecycle::{Activity, ShutdownSubcription}; use kumo_server_runtime::{rt_spawn, spawn_local}; use lruttl::LruCacheWithTtl; use memchr::memmem::Finder; diff --git a/crates/kumod/src/spool.rs b/crates/kumod/src/spool.rs index 56e46ca0..98ca00b8 100644 --- a/crates/kumod/src/spool.rs +++ b/crates/kumod/src/spool.rs @@ -1,10 +1,10 @@ -use crate::lifecycle::{Activity, ShutdownSubcription}; use crate::logging::{log_disposition, LogDisposition, RecordType}; use crate::mod_kumo::{DefineSpoolParams, SpoolKind}; use crate::queue::QueueManager; use crate::rt_spawn; use anyhow::Context; use chrono::Utc; +use kumo_server_lifecycle::{Activity, ShutdownSubcription}; use message::Message; use once_cell::sync::Lazy; use rfc5321::{EnhancedStatusCode, Response};