Reusable Server Kernel

Problem 33 (Major): SPOOL ld behavior at startup

=============== 1999-12-06 16:44:45 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
Here is a summary of the new behavior for the spool driver.
 
 
1.  The spool driver scans the reader for eligible files
    whenever either of these two events happens:
 
    a.  A file arrives in the reader (to be very specific,
        device 0009 presents a device end interrupt).
 
    b.  Somebody issues SPOOL START to start a service.
 
    Each such event results in a "CP Q RDR ALL *" command
    being issued and the reader contents being swept once
    according to what's in the command response.
 
    A single CMS thread is responsible for reader sweeping.
    (This has always been true, but I just thought I'd
    mention it.)  When the reader needs to be swept, this
    thread is awakened via an IPC.
 
 
2.  When the line driver scans the reader because of
    spool file arrival, it will process only those files
    meeting all of the following criteria:
 
    - the file's filetype matches the SPL_INPUT_FT
      configuration setting, AND
    - the file's HOLD status is NONE, AND
    - the filename of the file matches the prefix
      of some service currently started via SPOOL START.
 
    Files failing this test are silently skipped.
 
 
3.  When the line driver scans the reader because a new
    service was started, it will process all files that
    would have been taken because of the "spool file
    arrival" event.  Also, if it finds a file in USER
    HOLD status, and if the HOLD condition is the ONLY
    thing blocking that file from being delivered to
    the newly started service, the spool driver will
    un-HOLD the file and deliver it to the newly started
    service.
 
    For clarity, let me emphasize:  the RSK un-HOLDs and
    delivers a file only if the file is intended for
    the NEWLY STARTED service.  The RSK won't un-HOLD and
    deliver a file for just any old service - only the
    newly started one.
 
    As in the "spool file arrival" scan, files not
    selected for processing are silently skipped.
 
 
4.  When a file is processed, its contents are read via
    Diag X'14', the file is placed in USER HOLD status,
    and the contents are delivered to an instance of
    the appropriate service.
 
    If the service consumes all of the file data,
    the spool file is PURGEd.  If the service leaves
    some of the data unconsumed, the file remains in
    the reader in USER HOLD status.
 
 
5.  The reader scan technique was improved so that files
    being skipped are skipped much faster.  If your
    application is doing a lot of file skipping it will
    see drastically improved performance.
 
 
What this boils down to is:
 
 - Files not delivered are skipped silently, and
 - When a file is delivered, it is left in the reader
   in HOLD state if the instance responds unfavorably, and
 - When you SPOOL START a service, if there are any held
   files waiting in the reader for that service, the RSK
   will un-HOLD and deliver them.
 
=============== 1999-12-01 15:13:02 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
Dave, I am working on something for you and will be in
touch.  Thanks for pointing this out.  BKW
=============== 1999-12-01 13:07:59 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
Unfortunately, there isn't any way to know that the "last"
SPOOL START command has been issued.  Maybe the best
idea is just not to issue the message.
=============== 1999-12-01 11:21:47 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
If there are spool files of the correct format (NETDATA) and
type (as spcified in teh CONFIG statement) when a RSK application
is started, then the RSK will produce BKWSPL0200E Service Not Found
error messages during startup. This seems to be some sort of
timing problem between doing a SUBCOM START SPOOL and the
SPOOL START <service> command.
Can this behavior be changed so that spool files in the rdr
are not examined by the RSK until *after* all of the services
have been started?


[ Help | Summary | Previous | Next ]