Michael,

I have just provided you with information which shows that even this is not 
functioning correctly. If you have multiple virtual servers, whichever one 
runs the pools.tcl file last will set the default pool parameters, and there 
is only one 'default' pool in a single nsd process, no matter how many 
virtual servers you have. So whatever pools.tcl is supposed to do or not do, 
it looks like pools use a single hash table with the key being only the pool 
name. Maybe this is the intent, although it would be easy to add the server 
name to the key. 

Also, please remember that the previous functionality allowed all pools to be 
configured via the config file. 

Given your opinion and Dossy's, which until today were never discussed on this 
list, maybe the AOL team can discuss it a little. I haven't seen any evidence 
that the proposed change is of any benefit, in fact we already have evidence 
to the contrary. If this is the first experiment in how things will go, maybe 
you should stop looking for documenters for broken code and ask for some real 
design help.  

Earlier today I was somewhat defending this as a simple oversight, but now it 
is becoming obvious that you, Dossy and Nathan simply don't get it: you have 
removed functionality and half replaced it with broken code. Who does this, 
doesn't tell anyone for a year and then defends it with comments like "don't 
upgrade if you don't like it".  Even if you could move all this module 
configuration into modules and packages, you still have to configure which 
modules to load and a bunch of other stuff.

Yes, the configuration file sucks and is hard to make even slight improvements 
in the way things work, and it doesn't usually contain default values set in 
C code, but lets take a little look at my current setup, one small part:

server.tcl (virtual server configuration file)

#
# Module Configuation Files:
#
foreach {module lib} $ServerModules {
    set moduleFile $configDir/${module}.tcl
    if {[file exists $moduleFile]} {
        source $moduleFile
    }
}

Notice that each virtual server has its own config directory, on the same 
level as the pages directory. Also, each module must have a unique name, so 
files named after the module are guaranteed not to conflict with each other. 
Also, each virtual server could have independent configuration files for a 
given module. But if you mix config files with code, then any differences 
will require you to use separate copies of the module code, and it also makes 
code versioning difficult. 

The previous threadpools config was handled in a similar way:
#
# Thread Pools
#

set pools [list fast default-jnm]

foreach pool $pools {
    set poolScript "$configDir/threadpool-${pool}.tcl"
    if {[file exists $poolScript]} {
        source $poolScript
    }
}

and threadpool-fast.tcl contains this:

# Single Threadpool
# pool = fast

ns_section "ns/server/${server}/pools"
ns_param $pool "$pool pool"


ns_section "ns/server/${server}/pool/$pool"
ns_param   maxconnections    100
ns_param   minthreads        2 ;# default = 0
ns_param   maxthreads        10
ns_param   threadtimeout     120
ns_param   map               "GET /*-thumb.jpg"
ns_param   map               "GET /images/*-thumb.jpg"
ns_param   map               "GET /test.html"

The  above threadpool configuration could just as easily go in with the module 
configuration file so it is obvious what the threadpool is used for.  But 
another look at the maps above also demonstrates the logic failure of tying 
threadpools to modules: some threadpools apply to an entire virtual server. 
If static files can be served by a dedicated set of threadpools, then these 
threads may avoid accumulating a lot of extra code and data, or long running 
threads can be restricted to just a few instances server-wide. 

Mamma said, "Stupid is as stupid does."  This whole thing is done stupid.

tom jackson


On Wednesday 01 August 2007 20:35, Michael Andrews wrote:
> To clarify - The pools.tcl file I wrote serves ONE purpose. To set
> the "default" pool's params to what is in the server config.  This
> was ONLY done because folks expected the default pool to be set at
> start up using the config params... as it was in 4.0.10.
>
> My opinion is that any OTHER pools should be created and managed by
> Tcl Modules and or Tcl Packages, not the server config.


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> 
with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to