diff --git a/src/modules/shellfilter-999999.0a1.0.tm b/src/modules/shellfilter-999999.0a1.0.tm index 54a6119f..65926617 100644 --- a/src/modules/shellfilter-999999.0a1.0.tm +++ b/src/modules/shellfilter-999999.0a1.0.tm @@ -46,7 +46,7 @@ tcl::namespace::eval shellfilter::log { lappend sourcelist $tag } - #note new_worker + #review new_worker/assign_worker? set worker_tid [shellthread::manager::new_worker $tag $settingsdict] #puts stderr "shellfilter::log::open this_threadid: [thread::id] tag: $tag worker_tid: $worker_tid" return $worker_tid @@ -1761,7 +1761,7 @@ namespace eval shellfilter::stack { dict set transform_record -obj $obj dict set transform_record -note "insert_transform-with-aside" lappend stack $transform_record - #add back poplist *except* the one we transferred into -aside (if we were able) + # add back poplist *except* the one we transferred into -aside (if we were able) foreach p [lrange $poplist $put_aside end] { set t [dict get $p -transform] set tsettings [dict get $p -settings] diff --git a/src/modules/shellthread-999999.0a1.0.tm b/src/modules/shellthread-999999.0a1.0.tm index 7e82e45f..bc0c4391 100644 --- a/src/modules/shellthread-999999.0a1.0.tm +++ b/src/modules/shellthread-999999.0a1.0.tm @@ -493,7 +493,11 @@ namespace eval shellthread::manager { dict set workers $sourcetag $winfo ;#writeback return [dict get $winfo tid] } else { - error "shellthread::manager::new_worker error: tag $sourcetag already has a worker with a different configuration\nexisting: $existing_settings\nattempted: $settingsdict" + set emsg "shellthread::manager::new_worker error: tag $sourcetag already has a worker with a different configuration\n" + append emsg "existing: $existing_settings\n" + append emsg "attempted: $settingsdict\n" + append emsg "workers info: $winfo" + error $emsg } } } @@ -514,7 +518,9 @@ namespace eval shellthread::manager { if {[llength $free_threads]} { #todo - re-use from tail - as most likely to have been doing similar work?? review - set free_threads [lassign $free_threads tidworker] + #set free_threads [lassign $free_threads tidworker] + set tidworker [lpop free_threads 0] + #todo - keep track of real ts_start of free threads... kill when too old set winfo [dict create tid $tidworker list_client_tids [list $tidclient] ts_start $ts_start ts_end_list [list] workertype [dict get $settingsdict -workertype]] #puts stderr "shellfilter::new_worker Re-using free worker thread: $tidworker with tag $sourcetag" @@ -690,6 +696,8 @@ namespace eval shellthread::manager { foreach workertid $subscriberless_workers { if {$workertid ni $shuttingdown_workers} { if {$workertid ni $free_threads && $workertid ne "noop"} { + thread::send $workertid {set ::shellthread::worker::settings {}} + #todo - log freeing up of thread lappend free_threads $workertid } } @@ -709,7 +717,9 @@ namespace eval shellthread::manager { } return $taginfo_list } + proc get_tag_config {tag} { + #review variable workers if {![dict exists $workers $tag]} { error "shellthread::manager::get_tag_config error no existing tag $tag"