Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix for cron. A task with no coroutine, and no command, and no anything else causes thrashing as an idle task Updated the versions of cron and processman and nettool called by modules within tcllib |
---|---|
Timelines: | family | ancestors | descendants | both | odie |
Files: | files | file ages | folders |
SHA1: |
cdb4dbfa458f244e15d627ee5b74255a |
User & Date: | tne 2016-07-21 21:55:21 |
Context
2016-07-22
| ||
20:38 | Added a fence to prevent recursive calls to cron::wait check-in: 055c6dd568 user: tne tags: odie | |
2016-07-21
| ||
21:55 | Fix for cron. A task with no coroutine, and no command, and no anything else causes thrashing as an idle task Updated the versions of cron and processman and nettool called by modules within tcllib check-in: cdb4dbfa45 user: tne tags: odie | |
20:47 | Checking in a new version of Cron. This one does a much more comprehensive job of managing objects and coroutines check-in: 1d00b41109 user: tne tags: odie | |
Changes
Changes to modules/cron/cron.tcl.
︙ | ︙ | |||
360 361 362 363 364 365 366 | continue } if {$::cron::trace > 2} { puts [list RUNNING $task [task info $task]] } dict set processTable($task) running 1 set coro [dict get $processTable($task) coroutine] | > > > > | < | 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | continue } if {$::cron::trace > 2} { puts [list RUNNING $task [task info $task]] } dict set processTable($task) running 1 set coro [dict get $processTable($task) coroutine] set command [dict get $processTable($task) command] if {$command eq {} && $coro eq {}} { # Task has nothing to do. Slot it for destruction lappend cancellist $task } elseif {$coro ne {}} { if {[info command $coro] eq {}} { set object [dict get $processTable($task) object] # Trigger coroutine again if a command was given # If this coroutine is associated with an object, ensure # the object still exists before invoking its method if {$command eq {} || ($object ne {} && [info command $object] eq {})} { lappend cancellist $task dict set processTable($task) running 0 |
︙ | ︙ |
Changes to modules/processman/processman.tcl.
1 2 3 4 | ### # IRM External Process Manager ### | | | 1 2 3 4 5 6 7 8 9 10 11 12 | ### # IRM External Process Manager ### package require cron 2.0 ::namespace eval ::processman {} if { $::tcl_platform(platform) eq "windows" } { package require twapi } else { ### |
︙ | ︙ |
Changes to modules/udpcluster/udpcluster.tcl.
1 2 3 4 5 6 7 8 9 10 11 12 | # -*- tcl -*- # ### ### ### ######### ######### ######### ## Name Service - Cluster # ### ### ### ######### ######### ######### ## Requirements package require Tcl 8.5 package require comm ; # Generic message transport package require interp ; # Interpreter helpers. package require logger ; # Tracing internal activity package require uuid | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # -*- tcl -*- # ### ### ### ######### ######### ######### ## Name Service - Cluster # ### ### ### ######### ######### ######### ## Requirements package require Tcl 8.5 package require comm ; # Generic message transport package require interp ; # Interpreter helpers. package require logger ; # Tracing internal activity package require uuid package require cron 2.0 package require nettool 0.5.1 package require udp package require dicttool namespace eval ::comm {} ::namespace eval ::cluster {} ### |
︙ | ︙ |