Serve concurrent terminal sessions with exact teardown

This commit is contained in:
ms2k 2026-07-18 02:51:19 +09:00
commit 254bb37764

View file

@ -20,8 +20,9 @@ use lazaret_storage_catalog::Catalog;
use crate::control::ControlSessionAdmission;
use crate::control::{
ControlError, InteractiveSessionExecutor, NonInteractiveSessionExecutor, PublishedControlFace,
SessionRegistry, StagedControlFace, TrustAnchor,
AcceptedControlConnection, ControlError, InteractiveSessionExecutor,
NonInteractiveSessionExecutor, PublishedControlFace, SessionRegistry, StagedControlFace,
TrustAnchor,
};
use crate::domain_store::{DomainStoreMutation, HostCoordinatorDomainStore};
use crate::git_routing::GitRoutingCoordinator;
@ -682,7 +683,17 @@ pub fn serve_production_control(
.adapter()
.published_control()
.ok_or(ControlError::StaleGeneration)?;
face.serve_next_coordinated(
let connection = face.accept_connection()?;
serve_production_control_connection(lifecycle, &face, connection)
}
pub(crate) fn serve_production_control_connection(
lifecycle: &Mutex<ProductionHostCoordinatorLifecycle<'_, '_>>,
face: &PublishedControlFace,
connection: AcceptedControlConnection,
) -> Result<(), ControlError> {
face.serve_connection_coordinated(
connection,
|admission| {
lifecycle
.lock()