LSTSRV-L Archives

LISTSERV Site Administrators' Forum

LSTSRV-L

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Eric Thomas <ERIC@FRECP11>
Sun, 13 Mar 88 20:33:00 SET
text/plain (129 lines)
A new  database, called LISTS,  has been  developed for backbone  release 1.5n
sites which can  afford the disk space. It stores  extensive information about
all  the registered  lists  in  the LISTSERV  network.  That  is, it  contains
information about the same  lists that are in the LIST  GLOBAL output, but the
complete  list header  is available  and can  be searched  using the  standard
LISTSERV database functions.
 
Technicalities:
 
- Only backbone sites with CMS release 4 or 5 can host the LISTS database. The
  corresponding database driver will not work under CMS release 3.
 
- Sites willing to host the LISTS database  should send me mail BEFORE 1.5n is
  released.  I will  then change  their backbone  tags to  read ":backbone.YES
  LISTDB(YES)". The registration can of course  be made after 1.5n is out, but
  this is likely  to create a lot  of REFRESH requests which we  should try to
  avoid.
 
- I have strictly no  idea how much disk space will be  required, so don't ask
  me :-) However, the files will be kept on the 'FILEDISK' disk, so you should
  certainly modify LOCAL SYSVARS to set 'FILEDISK' to something different from
  'A5' if you plan to host this database.
 
Operation:
 
LSVLDELT has been  modified to create a  checksum of the contents  of the list
header (edited as per a REVIEW command  - notably, all .IK/.IT calls are fully
resolved). This  checksum is  appended to the  list title as  it is  stored in
LOCLIST FILE and propagated into the network for other peers to store in their
GLOBLIST FILE.  Thus if the  list header is changed,  the list will  appear as
changed even  though the title et  al are unchanged. Finally,  the list header
checksums  are also  checksummed into  the global  'CKS' checksum,  so that  a
header update  lost in  a spool crash  will be detected  with just  the global
checksum (is  that enough  checksums for  you? :-) ).  LSVLDELT will  send the
headers of any list flagged as modified along with the 'REP' statement.
 
On the input side, LSVLUPD will work as before if the LISTS database is not to
be made locally available.  Otherwise it will do a lot of  things to store the
headers in  separate files  on the  FILEDISK, checking  several things  in the
process, and preparing a 'list of changes' for the LISTS database driver.
 
The problem is that this database is  likely to change relatively often and to
contain quite a lot of entries. Furthermore,  each entry (1 entry = 1 list) is
going to take a bit of CPU to  be analyzed and indexed. It would therefore not
be a good idea  to refresh the complete database index every  time a change is
being made.  Being provided with  a list of  changes, the database  driver can
regenerate  (or delete)  the  index  entries of  just  those  lists that  were
updated, and keep the other ones 'as is'.
 
Finally, the LSVLDELT command syntax has been extended:
 
  LSVLDELT REFRESHME <HDR>
 
  LSVLDELT REFRESH userid@node <HDR>
 
  LSVLDELT INIT userid@node <HDR>
 
The  (non-default) 'HDR'  option  indicates  that the  list  headers are  also
wanted. 'LSVLDELT  REFRESH' always causes  headers to  be sent out,  since the
update job is forwarded to the nearest backbone server for distribution to all
the servers.
 
End-user's point of view:
 
A request to access  the LISTS database will fail with  a 'Database LISTS does
not exist' message if sent to a pre-1.5n server.
 
When sent to a 1.5n server which is  not on the backbone, you will be provided
with the userid@node of  the backbone server nearest to the  one you sent your
request to.
 
A backbone server which doesn't host the database will give you the address of
the nearest backbone server that does have it.
 
The database's characteristics are as follows:
 
- DATE corresponds  to the date  the last update  was GENERATED by  the remote
  server hosting the list (remote server's  local time). Its resolution is the
  day, ie 'yy/mm/dd' is available but time is '??:??:??'.
 
- LIST-ID  (also  LISTID or  ID)  corresponds  to the  network-wide  "List-ID"
  keyword contents.
 
- LISTNAME (or NAME) is the actual name of the list (ie VM userid thereof).
 
- NODEID (or NODE) is the nodeid of the server hosting the list.
 
- TITLE is the list title.
 
All  the keywords  defined in  the various  list headers  are also  available,
PROVIDED THAT THEY ARE  NOT DEFAULTED. That is, you can do  "Select * in LISTS
where send=public  and owner  contains ERIC@FRECP11",  provided that  the list
header  contains an  explicit  definition  for "Send"  and  "Owner". If  these
keywords do not  appear in the list header, the  default values (resp "PUBLIC"
and <list  of postmasters>) are NOT  substituted. This would require  too much
CPU time, and  in some cases the  default value can be determined  only by the
server hosting the list.
 
The following document portions are available:
 
- ALL: the full list header.
 
- Header or HEADER: synonyms for ALL.
 
- ABStract or SUMmary: all the lines in the header that do not contain keyword
  definitions. These  are supposed  to be  a description of  what the  list is
  about. In the worst case, it will contain the list title.
 
This SUMMARY  thing is  only temporary,  I think  we should  discuss a  way to
better identify 'sections' in the list headers.
 
Finally, the default index looks like this:
 
*-----------------------------------------------------------------------*
> Select * in LISTS where subscription=open and title contains mail
--> Database LISTS, 3 hits.
 
> Index
Ref# Listname Nodename List title
---- -------- -------- ----------
0027 MAIL-L   DEARN    Mail Discussion List
0028 MAILBOOK DEARN    MAIL/MAILBOOK subscription list
0054 XMAILER  DEARN    The Crosswell Mailer List
*-----------------------------------------------------------------------*
 
  Eric
 
PS: I'll be off from FRECP11 next week.

ATOM RSS1 RSS2