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 ]
|