@@ -149,11 +149,6 @@ pub(crate) use ws::server::{
149149} ;
150150
151151use runtime:: RuntimeHandle ;
152- use std:: time:: Duration ;
153-
154- const DEFAULT_TMUX_JANITOR_INTERVAL_MS : u64 = 45_000 ;
155- const MIN_TMUX_JANITOR_INTERVAL_MS : u64 = 5_000 ;
156- const MAX_TMUX_JANITOR_INTERVAL_MS : u64 = 300_000 ;
157152
158153fn env_path ( key : & str ) -> Option < PathBuf > {
159154 std:: env:: var_os ( key) . map ( PathBuf :: from)
@@ -235,12 +230,6 @@ fn install_provider_hooks_on_startup(app: &AppHandle) -> Vec<(String, String)> {
235230mod tests {
236231 use super :: * ;
237232 use crate :: runtime:: RuntimeHandle ;
238- use std:: sync:: { Mutex , OnceLock } ;
239-
240- fn janitor_env_lock ( ) -> & ' static Mutex < ( ) > {
241- static LOCK : OnceLock < Mutex < ( ) > > = OnceLock :: new ( ) ;
242- LOCK . get_or_init ( || Mutex :: new ( ( ) ) )
243- }
244233
245234 fn test_app ( ) -> AppHandle {
246235 let ( app, _shutdown_rx) = RuntimeHandle :: new ( ) ;
@@ -326,39 +315,6 @@ mod tests {
326315 let _ = std:: fs:: remove_dir_all ( claude_home) ;
327316 let _ = std:: fs:: remove_dir_all ( codex_home) ;
328317 }
329-
330- #[ test]
331- fn resolve_tmux_janitor_interval_defaults_when_env_missing ( ) {
332- let _guard = janitor_env_lock ( ) . lock ( ) . unwrap ( ) ;
333- let previous = std:: env:: var_os ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" ) ;
334- std:: env:: remove_var ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" ) ;
335-
336- let interval = resolve_tmux_janitor_interval ( ) ;
337- assert_eq ! ( interval, Duration :: from_millis( DEFAULT_TMUX_JANITOR_INTERVAL_MS ) ) ;
338-
339- if let Some ( value) = previous {
340- std:: env:: set_var ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" , value) ;
341- }
342- }
343-
344- #[ test]
345- fn resolve_tmux_janitor_interval_clamps_out_of_range_values ( ) {
346- let _guard = janitor_env_lock ( ) . lock ( ) . unwrap ( ) ;
347- let previous = std:: env:: var_os ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" ) ;
348- std:: env:: set_var ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" , "1" ) ;
349- let min_interval = resolve_tmux_janitor_interval ( ) ;
350- assert_eq ! ( min_interval, Duration :: from_millis( MIN_TMUX_JANITOR_INTERVAL_MS ) ) ;
351-
352- std:: env:: set_var ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" , "9999999" ) ;
353- let max_interval = resolve_tmux_janitor_interval ( ) ;
354- assert_eq ! ( max_interval, Duration :: from_millis( MAX_TMUX_JANITOR_INTERVAL_MS ) ) ;
355-
356- if let Some ( value) = previous {
357- std:: env:: set_var ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" , value) ;
358- } else {
359- std:: env:: remove_var ( "CODER_STUDIO_TMUX_JANITOR_INTERVAL_MS" ) ;
360- }
361- }
362318}
363319
364320#[ tokio:: main]
@@ -377,18 +333,6 @@ async fn main() {
377333async fn run ( ) -> Result < ( ) , String > {
378334 let state_dir = resolve_state_dir ( ) . map_err ( |e| e. to_string ( ) ) ?;
379335 std:: fs:: create_dir_all ( & state_dir) . map_err ( |e| e. to_string ( ) ) ?;
380- crate :: services:: tmux:: configure_tmux_socket_path ( state_dir. join ( "tmux.sock" ) ) ;
381-
382- match crate :: services:: tmux:: cleanup_managed_tmux_sessions_stale ( ) {
383- Ok ( report) => {
384- eprintln ! ( "info: tmux startup cleanup {}" , report. summary_line( ) ) ;
385- }
386- Err ( error) => {
387- eprintln ! (
388- "warning: failed to cleanup stale coder-studio tmux sessions on startup: {error}"
389- ) ;
390- }
391- }
392336
393337 let app_data = resolve_app_data_dir ( ) . map_err ( |e| e. to_string ( ) ) ?;
394338 std:: fs:: create_dir_all ( & app_data) . map_err ( |e| e. to_string ( ) ) ?;
@@ -417,7 +361,6 @@ async fn run() -> Result<(), String> {
417361 }
418362
419363 let transport_server = start_transport_server ( & app) ?;
420- let janitor_interval = resolve_tmux_janitor_interval ( ) ;
421364 if cfg ! ( debug_assertions) {
422365 println ! ( "Coder Studio web dev server: {DEV_FRONTEND_URL}" ) ;
423366 println ! ( "Coder Studio local server: {}" , transport_server. endpoint) ;
@@ -428,9 +371,6 @@ async fn run() -> Result<(), String> {
428371 ) ;
429372 }
430373
431- let janitor_shutdown_rx = shutdown_rx. clone ( ) ;
432- let janitor_task = tokio:: spawn ( run_tmux_janitor ( janitor_shutdown_rx, janitor_interval) ) ;
433-
434374 let serve_result = axum:: serve (
435375 transport_server. listener ,
436376 transport_server
@@ -446,46 +386,5 @@ async fn run() -> Result<(), String> {
446386 . await
447387 . map_err ( |e| e. to_string ( ) ) ;
448388
449- janitor_task. abort ( ) ;
450-
451- match crate :: services:: tmux:: cleanup_managed_tmux_sessions_for_current_process ( ) {
452- Ok ( report) => {
453- eprintln ! ( "info: tmux shutdown cleanup {}" , report. summary_line( ) ) ;
454- }
455- Err ( error) => {
456- eprintln ! ( "warning: failed to cleanup coder-studio tmux sessions on shutdown: {error}" ) ;
457- }
458- }
459-
460389 serve_result
461390}
462-
463- fn resolve_tmux_janitor_interval ( ) -> Duration {
464- let base = crate :: services:: tmux:: tmux_janitor_interval ( ) ;
465- base. clamp (
466- Duration :: from_millis ( MIN_TMUX_JANITOR_INTERVAL_MS ) ,
467- Duration :: from_millis ( MAX_TMUX_JANITOR_INTERVAL_MS ) ,
468- )
469- }
470-
471- async fn run_tmux_janitor ( mut shutdown_rx : tokio:: sync:: watch:: Receiver < bool > , interval : Duration ) {
472- loop {
473- tokio:: select! {
474- _ = shutdown_rx. changed( ) => {
475- break ;
476- }
477- _ = tokio:: time:: sleep( interval) => {
478- match crate :: services:: tmux:: cleanup_managed_tmux_sessions_stale( ) {
479- Ok ( report) => {
480- if report. cleaned_sessions > 0 {
481- eprintln!( "info: tmux janitor cleanup {}" , report. summary_line( ) ) ;
482- }
483- }
484- Err ( error) => {
485- eprintln!( "warning: tmux janitor cleanup failed: {error}" ) ;
486- }
487- }
488- }
489- }
490- }
491- }
0 commit comments