ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » client side api exits?

Post new topic  Reply to topic
 client side api exits? « View previous topic :: View next topic » 
Author Message
mdhart
PostPosted: Fri May 19, 2006 8:14 am    Post subject: client side api exits? Reply with quote

Newbie

Joined: 30 Aug 2005
Posts: 2
Location: Hamilton

We have a client on OpenVMS that is misbehaving at times. Occasionally but not always, when it tries to MQGET a large message (4 million bytes or less, channel and queue are set at default size, 4194304 bytes), it fails on a 2010 MQRC_DATA_LENGTH_ERROR. This client will run for days without failure, handling hundreds of messages between failures. We've been working on this for a while, and are running into dead ends. My personal suspicion, based on history (don't ask), is that something in the VMS C++ compiler or runtime is overlaying memory, but i've no way to prove it.

MQRC_DATA_LENGTH_ERROR is as follows "The DataLength parameter is not valid. Either the parameter pointer is not valid, or it points to read-only storage."

What I'd really like to know is what parameters are being passed into the MQGET call. I've looked at tracing, but it only logs readable info if the MQGET call is passed down the wire to the queue manager, which in this case it is not.

Of course one option is to log the parameters before calling MQGET, but that, for various internal reasons, is not a trivial change, and if my theory is correct, changing the code will only move the problem elsewhere.

I've also looked at client-side API exits, but I can't figure out whether or not they work, or even how to configure them. Do they work on the client-side? How?

Any other ideas?

cheers,
mike
Back to top
View user's profile Send private message Visit poster's website
wschutz
PostPosted: Fri May 19, 2006 8:41 am    Post subject: Reply with quote

Jedi Knight

Joined: 02 Jun 2005
Posts: 3316
Location: IBM (retired)

There are two types of exits at play:

Channel exits that you supply on the client's machine and get envoked before / after data is sent / received (SENDEXIT/RCVEXIT) on the client channel.

The other exit type is the API Exit, which gets called at the server whenever a MQ api call is made into the qmgr.

I'm taking a guess here, but I'd think that 2010 is detected within the MQ client code itself and therefore you'd never see any associated traffic on the client channel, so none of the exits would get envoked.

Really, I think a client trace is the way to go. If you ONLY have hundreds of messages every few days, the volume whouldn't be too bad...
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
tleichen
PostPosted: Fri May 19, 2006 10:51 am    Post subject: Reply with quote

Yatiri

Joined: 11 Apr 2005
Posts: 663
Location: Center of the USA

Sure sounds like a memory leak of some sort. You might try making some of the parameters that go into the MQGET to be static. I know that's not the normal way of doing things, but it would not surprise me if it has an effect. If it does, you still need to find what's stomping all over memory.
_________________
IBM Certified MQSeries Specialist
IBM Certified MQSeries Developer
Back to top
View user's profile Send private message
mdhart
PostPosted: Fri May 19, 2006 12:03 pm    Post subject: Reply with quote

Newbie

Joined: 30 Aug 2005
Posts: 2
Location: Hamilton

Thanks for the advice. Based on the traces I've tested with, this error is thrown well before anything gets sent on the channel, thus rendering channel exits useless in this scenario. Unfortunately the traces themselves don't show the parameters either, at least not as far as I can tell. There is very little logged between the MQGET() and the error. I replicated the error by specifying a data length > 4Mb, and have attached the relevant part of the trace below.

I guess the only route is to modify the code and log what the parameters are before the call. We were hoping to find a non-obtrusive way of doing this (changing anything on this box is a political nightmare), but I guess not.

Thanks!
mike

<snip trace>
Code:

11:57:03.569337     6022.1     {  MQGET
 11:57:03.569356     6022.1     -{  MQGET
 11:57:03.569365     6022.1           ITimer Saved
 11:57:03.569375     6022.1          FPE Handler installed, New=77feab7e, Old=0
 11:57:03.569384     6022.1          SEGV Handler installed, New=77feab7e, Old=0
 11:57:03.569394     6022.1          BUS Handler installed, New=77feab7e, Old=0
 11:57:03.569403     6022.1          ILL Handler installed, New=77feab7e, Old=0
 11:57:03.569410     6022.1          Synchronous Signal Handling Activated
 11:57:03.569419     6022.1           Signals Saved
 11:57:03.569426     6022.1     --{  MakeCall
 11:57:03.569432     6022.1     --}  MakeCall rc=OK
 11:57:03.569442     6022.1          FPE Handler deinstalled, New=0, Old=77feab7e
 11:57:03.569451     6022.1          SEGV Handler deinstalled, New=0, Old=77feab7e
 11:57:03.569461     6022.1          BUS Handler deinstalled, New=0, Old=77feab7e
 11:57:03.569471     6022.1          ILL Handler deinstalled, New=0, Old=77feab7e
 11:57:03.569477     6022.1          Synchronous signal handling deactivated - previous handlers restored
 11:57:03.569486     6022.1           Signals Restored (1)
 11:57:03.569493     6022.1           ITimer Restored
 11:57:03.569501     6022.1     -}! MQGET rc=MQRC_DATA_LENGTH_ERROR
 11:57:03.569508     6022.1     }! MQGET rc=MQRC_DATA_LENGTH_ERROR
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » client side api exits?
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.