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 ]