[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference pamsrc::decmessageq

Title:NAS Message Queuing Bus
Notice:KITS/DOC, see 4.*; Entering QARs, see 9.1; Register in 10
Moderator:PAMSRC::MARCUSEN
Created:Wed Feb 27 1991
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2898
Total number of notes:12363

2754.0. "Message loss occurs on DMQ V3.0A" by TKTVFS::MATSUSHIMA (Product Support/MCS/JAPAN) Mon Feb 03 1997 01:43

  Hello all,
  I'm now in a trouble. Any suggestion please.

  A message loss occurred under following configuration.

  DMQ V3.0A ECO1
  OpenVMS Alpha V6.2

  I found the following information in DMQ V3.2 Release notes.

                 _____________________
                 2.1.4.4  PAMS_GET_MSGW Using the Minimum Wait
                          Timer Would Lose Messages
          Corrected a problem in which, under certain
          conditions, message loss occurred using PAMS_GET_
          MSGW with the minimum wait timer (1 = 1/10 second). A
          race condition existed where the expired timer caused
          a valid message to be lost.

  The document says that the problem occurs when minimum wait timer is
specified. But, similar problem occur with more long wait timer value on DMQ
V3.0.

  Question:

  1. Does the problem occur even though the timer is set to the different value
     from the one described above.

  2. Could you please illustrate what correction is added on DMQ V3.2 ?
     and why the problem occurs by setting the timer to minimum value ? 


  MCS/Hideki Matsushima
T.RTitleUserPersonal
Name
DateLines
2754.1Can occur with other values...KLOVIA::MICHELSENDECmessageQ EngineeringMon Feb 03 1997 08:0019
>  1. Does the problem occur even though the timer is set to the different value
>     from the one described above.

	  Yes, it can occur with any timeout since it a race condition within 
	the pams_get_msgw logic.  However, the longer the timer the less likely
	a program will fall into condition. 


>  2. Could you please illustrate what correction is added on DMQ V3.2 ?
>     and why the problem occurs by setting the timer to minimum value ? 

	  The ordering of the testing of a message arrivial and timeout
	was wrong which resulted in a message being successfully dequeued
	and then having it's status overwritten by the wait timer expiring.



	Marty
2754.2a few more questionsTKTVFS::MATSUSHIMAProduct Support/MCS/JAPANWed Feb 05 1997 04:1418
  Hello Marty,
  Thank you for your answer.
  I'm sorry I have a few more questions.

>>  2. Could you please illustrate what correction is added on DMQ V3.2 ?
>>     and why the problem occurs by setting the timer to minimum value ? 
>	  The ordering of the testing of a message arrivial and timeout
>	was wrong which resulted in a message being successfully dequeued
>	and then having it's status overwritten by the wait timer expiring.

  Why a message loss occure though the message is successfully dequeued?
  I think that "a message is successfully dequeued" means that an application 
can get the meesage. So, please tell me the meaning of "dequeue" because I may
have wrong understanding of it.
  I appreciate that the one like the time chart will be shown, if possible.

  Regards,
  Hideki Matsushima
2754.3A clearer explaination...KLOVIA::MICHELSENDECmessageQ EngineeringWed Feb 05 1997 08:3920
re: .2

>  Why a message loss occure though the message is successfully dequeued?
>  I think that "a message is successfully dequeued" means that an application 
>can get the meesage. So, please tell me the meaning of "dequeue" because I may
>have wrong understanding of it.
>  I appreciate that the one like the time chart will be shown, if possible.

	  Sorry that I wasn't clear.  What I ment was that internally DmQ 
	removed the message from the global memory queue and is in the process
	of returning that message to the application.  However, in the middle
	of this operation the user specified pams_get_msgw timeout expires
	and sets a flag.  The DmQ code erronously acts upon the timeout
	condition and thus does not complete the transfer of the dequeued
	msg back to application.  This results in PAMS__TIMEOUT being returned 
	to the caller and the dequeued message is ignored and thus lost.



	Marty