Either you sent that many SMSGs that CP's buffer of (255?) was
overflowed, either some of the SMSGs caused your server to execute a
command that uses VMCF, RAC and NETSTAT are just two examples.  PIPE
VMC is another obvious example.

2009/4/23 Fran Hensler <f...@zvm.sru.edu>:
> On Thu, 23 Apr 2009 09:07:06 +0200 Kris Buelens said:
>>The DO QUEUED() is not required, there is only one stacked message for
>>an SMSG or IUCV event.
>
> You are correct Kris.  I just ran a test where I flooded my WAKEUP
> with 10 SMSGs in quick succession.  Tey were all processed one at a
> time.
>
> But I am SURE that when I first wrote my WAKEUP routine I was losing
> SMSGs.  Could it be because they were RC=1?  I don't know when I
> added:  'CP SET SMSG IUCV' to cause RC=5 on SMSG.
>
> I do not use WAKEUP's FILE option.
>
> /Fran
> ------------------------------------------------------------------------
>
>>If however you also use WAKEUP's FILE option, the WAKEUP file entry
>>that (could have) caused is **in all interrupt cases** stacked first
>>(before the entry of an SMSG for example).
>>If more SMSGs (or IUCVMSGs) were sent, CP or WAKEUP itself may have
>>queued some in their internal buffers while you handle the single one
>>placed in the CMS stack.
>>
>>Losing messages: we almost never lost messages.  One exception: if you
>>send SMSG's to a server and the server issues a RACF or NETSTAT
>>command, all SMSGs queued by CP are "eaten" by the RACF/NETSTAT
>>command (both SMSG and RACF/NETSTAT use VMCF, which is limited to one
>>"path").  Solution: make WAKEUP handle the SMSGs via IUCV.  From my
>>RxServer code:
>>  WakeupOptions='IUCVMSG QUIET RDR'
>>  /* To better co-exist with VMCF pgms like the RAC & NETSTAT command */
>>  /* we will set SMSG to IUCV so WAKEUP no longer uses VMCF */
>>  'CP SET SMSG IUCV'    /* ... grab SMSGs with WAKEUP's IUCV interface */
>>An SMSG will then make WAKEUP exit with RC=5 instead of 1.
>>
>>I recommend you have a look at the SERVER KERNEL file in my RxServer
>>package; subroutines PROCESS:, GOT_a_MSG, and GOT_a_SMSG: are
>>important here.
>>
>>2009/4/23 Fran Hensler <f...@zvm.sru.edu>
>>>
>>> Jim -
>>>
>>> I found out the hard way that when WAKEUP gives you RC=5 that there
>>> may be more then one message to be processed.
>>>
>>> When I wrote this EXEC I assumed that there was only one message and
>>> every once in a while I would lose one.
>>>
>>> Here is part of an EXEC:
>>>
>>> 'CP SET SMSG IUCV'
>>> Do Forever
>>>   'WAKEUP    (CONS IUCVMSG   RDR      '
>>>   Say 'Queued =' queued() '  Rc='Rc
>>>   Select
>>>      When RC = 1 then Call wakeup_smsg
>>>      When RC = 2 Then Call wakeup_time
>>>      When RC = 4 Then Call wakeup_rdr
>>>      When RC = 5 Then Call wakeup_smsg
>>>      When RC = 6 Then Call wakeup_cons
>>>      Otherwise Say 'Unexpected RC='RC 'from WAKEUP.'
>>>   End /* select */
>>> End /* Do */
>>> Exit
>>>
>>> {snip}
>>>
>>>
>>> wakeup_smsg:
>>> /* ================================================================== */
>>> /* Process SMSG                                                       */
>>> /*                                                                    */
>>> Say 'Smsg queued =' queued()
>>> Do m = 1 to queued()
>>>   Call process_smsg
>>> End
>>> Return
>>>
>>> process_smsg:
>>> Parse Upper Pull message
>>> say message
>>> If Word(message,3) = 'LOGOFF' then 'CP LOGOFF'
>>> /* Do some processing */
>>> Return
>>>
>>> /Fran Hensler at Slippery Rock University of Pennsylvania USA for 45 years
>>>    mailto:f...@zvm.sru.edu  http://zvm.sru.edu/~fjh  +1.724.738.2153
>>>              "Yes, Virginia, there is a Slippery Rock"
>>> --------------------------------------------------------------------------
>>
>>
>>
>>--
>>Kris Buelens,
>>IBM Belgium, VM customer support
>



-- 
Kris Buelens,
IBM Belgium, VM customer support

Reply via email to