Great Circle Associates Majordomo-Workers
(September 1994)
 

Indexed By Date: [Previous] [Next] Indexed By Thread: [Previous] [Next]

Subject: a faster get_config
From: David Barr <barr @ pop . psu . edu>
Date: Wed, 14 Sep 1994 09:56:02 -0400
To: majordomo-workers @ greatcircle . com
In-reply-to: Your message of "Tue, 13 Sep 1994 21:00:18 PDT." <199409140400.VAA18402@osiris.ac.hmc.edu>

In message <199409140400.VAA18402@osiris.ac.hmc.edu>, Jared_Rhine@hmc.edu write
s:
>machine is starting to push 10 minutes to complete.  We've got 190 lists,
>and a 'lists' command has to run a 'get_config' for each, which is an
>enormously expensive process.

Yeah, I've often thought if I had to re-implement Majordomo from
scratch, I'd to the configuration stuff differently.

Instead of a config file, you'd assign each list a directory,
and make the configuration keywords files.

For the sake of illustration, call it $listdir.  So, for "widget-lovers",
you'd have "/var/lists/widget-lovers/" or something.

To read the list of members of the list, you'd read $listdir/list.
(this is what the sendmail alias would use)

To find out the owner(s) of the list, you'd read $listdir/owner,
similiarly say $listdir/moderator, $listdir/approval.  These would
:include: files for the standard aliases for the list.  This would
always allow list owners the ability to change them, as well
as make it as easy to have multiple owner/approvers/moderators as
one, and WITHOUT having to create yet another Majordomo list.

The "description" string would be $listdir/description.

To find any information about a list, it's just an open()/read()/close().
Rarely do you ever need to access out _all_ information about a list,
only when doing a config or newconfig.  The config/newconfig commands
would just slurp up all the files into one configuration file, and
conversly explode a new configuration file into all the files.

Doing headers and footers becomes really easy since you just have to
append/prepend $listdir/header $listdir/footer

To do the "lists" command, it would be one readdir() and N open()/read()/
close()'s.  Still not very fast, but Majordomo could do some caching
for special expensive operations like "lists" by writing the "lists"
output in a file, and updating the cache whenever a list is added
or when a "newinfo" or "newconfig" command is done.

One easy way to do digests would be to have simply $listdir/digest/list,
which would contain the list of people subscribed to the digest.
$listdir/digest/options or something could contain all the stuff about
when to send out digests.  You'd have also $listdir/digest/header and
$listdir/digest/footer, $listdir/digest/volume, etc.

You'd still have to have some configuration files for certain things
I think.  There are so many options to majordomo now for resend with
little stuff like reply_to, resend_host, and subject_prefex that it makes
sense to put those together in some fast easy-to-parse format.

Just some ideas.

--Dave


Follow-Ups:
References:
Indexed By Date Previous: Re: locking in the face of multiple subscribe requests
From: Michael Richardson <mcr@latour.sandelman.ocunix.on.ca>
Next: Re: locking in the face of multiple subscribe requests
From: "John P. Rouillard" <rouilj@cs.umb.edu>
Indexed By Thread Previous: Re: locking in the face of multiple subscribe requests
From: Michael Richardson <mcr@latour.sandelman.ocunix.on.ca>
Next: Re: a faster get_config
From: "John P. Rouillard" <rouilj@cs.umb.edu>

Google
 
Search Internet Search www.greatcircle.com