Re: Response issues on GS1280, VMS 7.3-2

From: Dave Froble (davef_at_tsoft-inc.com)
Date: 07/26/05


Date: Tue, 26 Jul 2005 02:33:36 -0400

Lee Mah wrote:
> Keith Parris wrote:
>
>> Lee wrote:
>>
>>> All I/O of production data files is co-ordinated through
>>> in-house developed library routines. For every record read,
>>> inserted, updated, or deleted, a translation of the XXXXXX
>>> logical is performed to see if a production data file is
>>> being maintained (CONVERT/RECLAIM). If the XXXXXX value is
>>> anything other than OFF, then extra processing takes place
>>> for a data file that is being maintained. The processing
>>> that takes place on a file being maintained is a "journalling
>>> concept. This allows us to maintain a file with users
>>> actively entering data. Once the maintenance is completed,
>>> the users access the new data file transparently.
>>
>>
>>
>> Instead of translating the logical name for each I/O, you might
>> consider one of a couple of approaches:
>> 1) Within the application, use a TQE to fire off a periodic routine to
>> translate the XXXXXX logical name and set a flag indicating whether
>> maintenance work is in progress. Then for each I/O, first test this
>> flag. Let's say you decide to do this polling once every 10 seconds.
>> Then you simply need to $WAIT slightly more than 10 seconds after
>> defining the logical name XXXXXXX to be something other than "OFF"
>> before you actually start working with the files.
>> 2) At application startup time, use $ENQW to acquire a Protected Write
>> mode lock on a resource named XXXXXX (or whatever) with a Blocking AST
>> queued. Once this lock is granted, set a flag indicating that no
>> maintenance work is going on. Test this flag for each I/O. When you
>> need to do file maintenance work, grab and hold a lock with EXclusive
>> mode for the duration of the maintenance work. In the applications'
>> Blocking AST routine, convert the PW lock down to NL mode, set the
>> flag so as to indicate that maintenance work is now going on, and
>> queue an asynchronous request with $ENQ to convert your lock from NL
>> to PR mode lock, with a completion AST which clears the
>> "maintenance-in-progress" flag.
>
>
>
> Thanks Keith,
>
> I'll forward your suggestion to the DB team.

Without getting into the details, I'll second Keith's idea of using the
lock manager for what is, by your description above, basically a locking
type of task. Using logicals for such is a mis-use of the logicals
capability, and such mis-use can lead to problems.

That said, getting a good grasp of usage of the DLM can be, well,
difficult comes to mind.

-- 
David Froble                       Tel: 724-529-0450
Dave Froble Enterprises, Inc.      Fax: 724-529-0596
DFE Ultralights, Inc.              E-Mail: davef@tsoft-inc.com
170 Grimplin Road
Vanderbilt, PA  15486