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>
Sat, 30 May 1987 20:43 SET
text/plain (132 lines)
  Okay, now the  thing is almost ready  to be shipped. I'd have  a little more
things to prepare of course, but at some  point one has to get started. I will
send beta-1.5j shipments on monday evening to the people who requested one, ie
CMUCCVMA and POLYGRAF (Jose Maria had asked  for one too, of course...) If you
want to get a beta-1.5j shipment, PLEASE send me mail before monday evening (I
have a CS Metaphysics exam up to 5pm so you can be sure I won't send it before
7pm  :-)  ). I'd  rather  ship  one DISTRIBUTE  batch  to  ten people  than  5
individual shipments.
 
  Status of the latest improvements:
 
- DIST2 must be tested in peer-to-peer  communication and is still in the same
  state as last week.  It passed all the tests in local  mode, but that's only
  70% of the code...
 
- The subscription renewal and migration-exec  stuff that I wrote last weekend
  is now fully operational (see below).
 
- The remote-update  command has just  been finished.  It seems to  be working
  satisfactorily.
 
Migration execs:
 
  The worst two problems with people who don't install updates in time are:
 
1) They  tend to  install them  in random order.  This should  no longer  be a
   problem thanks to  FILEV (by the way, the problem  with FILEVed MODULEs has
   been fixed by putting a time stamp WITHIN every module)
 
2)  LSVCHK used  to  perform several  'migration tricks'  when  it detected  a
   release change. For  example, if it detected that the  BITEARN LINKSUM file
   was in old format,  it would convert it to new format.  It would supply new
   fields in the LIST files, etc. However this ALWAYS assumed a migration from
   one release to the next one, and  1.5i's LSVCHK was not able to perform all
   the commands required to migrate from 1.3c to 1.5i :-)
 
  Release 1.5j  incorporates a  complete change  in this  migration mechanism.
With each  update shipment there is  a 'migration exec' (MIG_15I,  MIG_15J, et
al) which  handles the upgrade from  the previous release to  its own release.
LSVCHK executes  each of these  execs in turn, and  in the RIGHT  order, after
checking that they have not already been executed. When the exec has completed
successfully,  it  can  be erased  from  the  A-disk  (but  this is  not  done
automatically). If you update 4 releases at  once, there is no problem as long
as  you   have  the  4  migration   execs.  LSVCHK  will  then   perform  some
release-independent cleanup  (eg rebuilding the PEERS  info, refreshing system
filelists).
 
  A  new  user exit,  LSV$CCNS,  has  been  created  to handle  console  spool
manipulation. I know that  some of you don't keep a  LISTSERV console log, but
when you're installing a new version you will probably definitely want to keep
one. LSVCHK will  order LSV$CCNS to start  a new console log  before it starts
the migration  process, and  then it will  order it to  close the  console and
reset it  to its previous state.  PLEASE REVIEW THESE CONSOLE  LOGS CAREFULLY.
They may contain  error messages from the migration execs,  and they will most
probably contain messages saying "MIG_15J EXEC  can be erased from A-disk" and
suchlike. Anyway LSV$CCNS  lets you choose the default operation  mode for the
console  (START/STOP), the  spool  filename to  be used  when  the console  is
closed, and the person who is to receive this console log.
 
 
Automatic update:
 
  This is  done by  a new  command, INSTALL. This  is a  sophisticated process
which would be long to explain. Anyway here's a short description:
 
- Update material  is subdivised  in "shipments". A  shipment is  a consistent
  series of files WITHOUT ANY EXTERNAL CODE CO-REQUISITE. This means that each
  shipment can be loaded individually without problem. Thus an ASMxxx SHIPMENT
  is a shipment, any DOCxxx deck  containing only documentation is a shipment,
  but 10  execs out  of UPD15J  SHIPMENT are  *not* a  shipment are  there are
  external co-requisites.
 
- Each shipment is split into a number  of "segments". A segment is a physical
  file which bears a "segment number" and  is supposed to be smaller than 2000
  lines. If you concatenate all the segments in the appropriate order, you get
  the "shipment  file" which  is the thing  that is going  to be  CARD LOADed.
  There can be any number of segments in a shipment file.
 
- For each shipment, there are a set of "control variables" that tell LISTSERV
  what to do with it. They are duplicated on each segment for easier reference
  by the program. These variables include:
 
  o Pre-requisite info  for the shipment. For example, the  CODE shipment will
    always have  the MEMO  shipment as  a pre-requisite, to  be sure  that the
    server will not be updated before the postmaster gets the doc.
 
  o What to do if the pre-requisites fail: WAIT or FAIL.
 
  o Whether the shipment  must be installed on the A-disk  or forwarded to the
    postmaster.  For example,  the MEMO  shipment is  always forwarded  to the
    postmaster.
 
  o Whether the server must be  rebooted after installing the shipment. A CODE
    shipment will have this option, but a DOC one won't.
 
  o Whether a backup of the A-disk  must be done before installing the code or
    not.  This is  an  optional facility.  The first  shipment  of each  major
    software change will have this option active. The backup is done by a user
    exit of course.
 
Now what happens when segments are received?
 
- LISTSERV  waits  until ALL  the  segments  of  a  given shipment  have  been
  received. This is regardless of all the rest.
 
- It then  checks the pre-requisites. If  they fail and WAIT  was specified in
  case  of failure,  the  shipment is  merely  left in  the  reader for  later
  retries. If FAIL (default) a nastygram is posted.
 
- If  the shipment  is  a "manual"  one,  it  gets to  the  postmaster with  a
  nicygram.
 
- If the user exit LSV$INST forces manual update, it gets to the postmaster as
  if I  had specified manual update.  The shipment is then  marked as received
  (for further pre-requisite verification).
 
- Otherwise a backup is done if  needed, the console is closed and re-started,
  the stuff is  loaded, console is closed  with a special name,  and server is
  potentially rebooted. Shipment is marked as installed.
 
Finally, the status of the shipment installation can be queried at any time by
means  of  the  "INSTALL  STATus  <shipid>"  command  (postmaster  +  LISTSERV
coordination),  or retried  with  "INSTALL RETRY  <shipid>". Internal  INSTALL
RETRY ALL calls  are being issued after each successful  installation to retry
shipments which had pre-req problems and  were in WAIT state. A shipment which
has failed  is placed in FAIL  state and will  not be retried, except  with an
explicit 'RETRY shipid'.
 
Wow, was that a long note... :-)
 
  Eric

ATOM RSS1 RSS2