In order to replace some assembler and REXX code with portable PASCAL
code, a number of changes to list caching have been made in version 1.8a.
These changes also bring very significant performance improvements for
large lists, especially in terms of I/O, for the list management
functions that are now written in PASCAL (ADD, SUBSCRIBE, QUERY, SET,
etc). For instance, a QUIET ADD to a 5000-users list only results in
about 10 I/O operations rather than 300 (as usual, only the second and
subsequent operations after a reboot benefit from this caching).
Functions implemented in REXX that do their own I/O to the LIST files do
not, unfortunately, benefit from these improvements.
As a result of these changes, a number of unsupported list management
practices that used to work in previous versions will no longer be
available.
Unsupported practices that continue to work as before:
- Editing the LIST file manually (with XEDIT) while LISTSERV is not
running.
- Deleting one or more subscribers from a LIST file via XEDIT while
LISTSERV is running.
- Changing the name (but not the address) of one or more subscribers
while LISTSERV is running.
- Removing blank lines from the LIST file while LISTSERV is running.
Unsupported practices that will no longer work:
- Adding new subscribers via XEDIT while LISTSERV is running: LISTSERV
may later claim that the new subscribers are not on the list. The same
applies to changes made to a subscriber's address.
- Altering list header keywords via XEDIT while LISTSERV is running: the
changes will not be picked up.
- Using the 'listname CACHE' files as a means to obtain information about
list header keywords: LISTSERV no longer creates these files, and as
before the only supported mechanism for extracting list keywords is to
use the LSVKEYWD function, which is a supported permanent programming
interface.
A temporary programming interface has been provided for cases where you
absolutely need to modify LIST files via external programs while LISTSERV
is running. You should make the changes as you used to and, after the
last change is made and the file has been closed, but before returning
control to LISTSERV, do:
Call LSVFSI 'HR',listname
You could place this instruction in your PROFILE XEDIT, for instance. If
you specify '*' for the list name, all lists are affected at once.
Eric
|