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 » Trigger monitor not triggering

Post new topic  Reply to topic Goto page 1, 2  Next
 Trigger monitor not triggering « View previous topic :: View next topic » 
Author Message
TimDroz
PostPosted: Tue Jun 29, 2004 11:52 am    Post subject: Trigger monitor not triggering Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

AIX 5.2, WebSphere MQ 5.3 CDS07

I've got a local queue called MRR.QL which is set to trigger a process called MRR.PR using SYSTEM.DEFAULT.INITIATION.QUEUE. The process invokes a compiled C program called receive_mrr. I can run this program manually and pull a message off the MRR.QL queue, but no matter what I do, I can't get the trigger to fire when a message lands on that queue. I'm running the trigger monitor with the following params:

runmqtrm -m JBXSD170 -q SYSTEM.DEFAULT.INITIATION.QUEUE

Any ideas what to try next?

Thanks!
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Tue Jun 29, 2004 12:27 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

Is the MRR.QL queue turned on for triggering?

Does it specify the INIT queue you are watching?

Does it specify a process definition?

Is the process definition correct?

Are there any other processes hooked into the queue (IPROCS>0)?

Did the trigger message actually get produced, and the TM tossed it to the DLQ?

Did the TM actually start (do a qstatus on the INIT queue)?

Is your program really starting, maybe just abending before it can read the queue?

Is the ID that the TM is running under granted acces to start the program, and that ID has MQ access to the queue (the triggered app runs with the ID that the TM runs under)?
_________________
Peter Potkay
Keep Calm and MQ On


Last edited by PeterPotkay on Tue Jun 29, 2004 12:28 pm; edited 1 time in total
Back to top
View user's profile Send private message
clindsey
PostPosted: Tue Jun 29, 2004 12:27 pm    Post subject: Reply with quote

Knight

Joined: 12 Jul 2002
Posts: 586
Location: Dallas, Tx

I have a couple of suggestions:
dis ql(MRR.QL) and make sure you see 'TRIGGER' and not 'NOTRIGGER'.

Then look at TRIGTYPE and TRIGDPTH. If you took defaults, this is FIRST and 1. With the defaults, if there are any messages on the queue when the trigger monitor starts, you will not trigger on a new message. The queue has to be emptied first.

You might set TRIGTYPE(EVERY) until you get it triggering and then set it back to FIRST. You don't want to leave it set to EVERY.

Charlie
Back to top
View user's profile Send private message
TimDroz
PostPosted: Tue Jun 29, 2004 1:04 pm    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

On the display, I see that the QL is defined with:

TRIGGER
TRIGTYPE(FIRST)
TRIGDPTH(1)
IPROCS(0)
INITQ(SYSTEM.DEFAULT.INITIATION.QUEUE)
PROCESS(MRR.PR)

I tried toggling to EVERY, but that didn't help. I've also tried draining the queue and resetting TRIGGER/NOTRIGGER.

The userid which both MQ and TRM are running as is able to manually invoke the process defined in MRR.PR from the command line, so permissions are not an issue.

I've double-checked the process definition, and it points to the correct executable with a full and correct path.

I don't have any messages in the DLQ. A message from a remote QMGR lands in MRR.QL and stays there, it doesn't seem to go anywhere, and nothing else is generated or ending up anywhere else.

qstatus on SYSTEM.DEFAULT.INITIATION.QUEUE reads:
IPPROCS(0)
OPPROCS(0)
CURDEPTH(0)
UNCOM(NO)
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Tue Jun 29, 2004 1:16 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

Quote:

qstatus on SYSTEM.DEFAULT.INITIATION.QUEUE reads:
IPPROCS(0)


This says your TM is NOT running. A running TM has the INIT queue open. There is your problem.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
kman
PostPosted: Wed Jun 30, 2004 12:01 am    Post subject: Reply with quote

Partisan

Joined: 21 Jan 2003
Posts: 309
Location: Kuala Lumpur, Malaysia

I have a suggestion,

send in your screeshot of the TM after you sent the message. This will show what error it is encountering.
Back to top
View user's profile Send private message Yahoo Messenger
TimDroz
PostPosted: Wed Jun 30, 2004 5:10 am    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

Sorry, Peter... after reading your comment about IPPROCS being 0, I double-checked and I had tried using a different init queue, and hadn't shut down the trigger monitor and restarted it with SYSTEM.DEFAULT.INITIATION.QUEUE.

Once I did that, I can see that IPPROCS (on S.D.I.Q) is 1, but the MRR.QL queue still doesn't trigger the MRR.PR process when the first message lands on the queue, despite being set to TRIGGER, TRIGTYPE FIRST and TRIGDPTH 1.

kman, what did you mean by "take a screenshot of the TM?" There's nothing to take a screenshot of. I don't even get the normal stdout kind of text I see when a message is actually pulled off the queue... it's just doing nothing.

For clarity's sake, here's a dump of those three objects:

Code:
mqm@jbxsd170:/home/mqm $ runmqsc JBXSD170
5724-B41 (C) Copyright IBM Corp. 1994, 2002.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager JBXSD170.


dis ql(MRR.QL)
     1 : dis ql(MRR.QL)
AMQ8409: Display Queue details.
   DESCR(MRR reply queue used to unlock Oracle tables)
   PROCESS(MRR.PR)                         BOQNAME( )
   INITQ(SYSTEM.DEFAULT.INITIATION.QUEUE)
   TRIGDATA( )                             CLUSTER( )
   CLUSNL( )                               QUEUE(MRR.QL)
   CRDATE(2004-06-17)                      CRTIME(10.07.49)
   ALTDATE(2004-06-30)                     ALTTIME(09.07.25)
   GET(ENABLED)                            PUT(ENABLED)
   DEFPRTY(0)                              DEFPSIST(YES)
   MAXDEPTH(5000)                          MAXMSGL(4194304)
   BOTHRESH(0)                             SHARE
   DEFSOPT(SHARED)                         HARDENBO
   MSGDLVSQ(PRIORITY)                      RETINTVL(999999999)
   USAGE(NORMAL)                           TRIGGER
   TRIGTYPE(FIRST)                         TRIGDPTH(1)
   TRIGMPRI(0)                             QDEPTHHI(80)
   QDEPTHLO(20)                            QDPMAXEV(ENABLED)
   QDPHIEV(DISABLED)                       QDPLOEV(DISABLED)
   QSVCINT(999999999)                      QSVCIEV(NONE)
   DISTL(NO)                               NPMCLASS(NORMAL)
   DEFTYPE(PREDEFINED)                     TYPE(QLOCAL)
   SCOPE(QMGR)                             DEFBIND(OPEN)
   IPPROCS(0)                              OPPROCS(0)
   CURDEPTH(1)                         
dis ql(SYSTEM.DEFAULT.INITIATION.QUEUE)
     2 : dis ql(SYSTEM.DEFAULT.INITIATION.QUEUE)
AMQ8409: Display Queue details.
   DESCR(MQSeries Default Initiation Queue)
   PROCESS( )                              BOQNAME( )
   INITQ( )                                TRIGDATA( )
   CLUSTER( )                              CLUSNL( )
   QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)
   CRDATE(2004-06-17)                      CRTIME(09.56.49)
   ALTDATE(2004-06-30)                     ALTTIME(09.05.41)
   GET(ENABLED)                            PUT(ENABLED)
   DEFPRTY(0)                              DEFPSIST(NO)
   MAXDEPTH(1000)                          MAXMSGL(1000)
   BOTHRESH(0)                             SHARE
   DEFSOPT(SHARED)                         HARDENBO
   MSGDLVSQ(PRIORITY)                      RETINTVL(999999999)
   USAGE(NORMAL)                           NOTRIGGER
   TRIGTYPE(NONE)                          TRIGDPTH(1)
   TRIGMPRI(0)                             QDEPTHHI(80)
   QDEPTHLO(20)                            QDPMAXEV(ENABLED)
   QDPHIEV(DISABLED)                       QDPLOEV(DISABLED)
   QSVCINT(999999999)                      QSVCIEV(NONE)
   DISTL(NO)                               NPMCLASS(NORMAL)
   DEFTYPE(PREDEFINED)                     TYPE(QLOCAL)
   SCOPE(QMGR)                             DEFBIND(OPEN)
   IPPROCS(1)                              OPPROCS(0)
   CURDEPTH(0)                         
dis process(MRR.PR)
     3 : dis process(MRR.PR)
AMQ8407: Display Process details.
   DESCR( )                             
   APPLICID(/home/pdapps/puradm/bin/receive_mrr)
   USERDATA( )                             ENVRDATA( )
   PROCESS(MRR.PR)                         ALTDATE(2004-06-29)
   ALTTIME(15.00.06)                       APPLTYPE(UNIX)
end
     4 : end
3 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Wed Jun 30, 2004 5:16 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

After you type:
runmqtrm -m JBXSD170 -q SYSTEM.DEFAULT.INITIATION.QUEUE


the screen will display all activity that the trigger monitor encounters. (You can prove this by manually dropping any old message to this INIT queue and watching the errors on the screen since the message is not a proper trigger message).

Are you saying that you see nothing happening on the screen at all? If yes, that means the QM is not generating a trigger message to that INIT queue. (Maybe its not creating any trigger message, or its putting it to another INIT queue).

Or do you see something? If yes, what?


What is the IPROCS on the trigger queue? If it is > 0 when you are trying this, you will not trigger. The QM sees that the queue is open for input and assumes someone is handling it, so why trigger?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Wed Jun 30, 2004 5:20 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

Quote:

CURDEPTH(1)


Are you starting with an empty queue when you are testing this? Trigger On First needs the queue to go from 0 to 1. If it goes from 1 to 2, or anything other than 0 to 1, you will not trigger (unless the Trigger Interval has passed by and another message lands).

For simplicitys sake, make sure the queue deppth is 0, with IPROCs = 0, before trying again.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
TimDroz
PostPosted: Wed Jun 30, 2004 5:29 am    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

What you see there in the dump is what the system looks like after I have started with an empty queue, started the TRM with:

runmqtrm -m JBXSD170 -q SYSTEM.DEFAULT.INITIATION.QUEUE

and then dropped a test message on the MRR.QL queue.

No, there is absolutely no output in the terminal window where I started the TRM, so I'm pretty sure that a trigger message is not being generated at all at this point. I'm really confused by all of this. This is part of a migration from an old HP-UX server to a new AIX box, and I've used saveqmgr to backup all the objects from the HP box, edited the PCF file to reflect the change in machine names, and imported that file into the new AIX box. I was pretty much expecting all of this to work without a hitch.
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Wed Jun 30, 2004 5:40 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

TimDroz wrote:
No, there is absolutely no output in the terminal window where I started the TRM


You don't even see
Quote:
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
WebSphere MQ trigger monitor started.

__________________________________________________
Waiting for a trigger message


Or similar?
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
TimDroz
PostPosted: Wed Jun 30, 2004 5:58 am    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

Ahh... I had been starting up TRM using nohup and putting the process in the background... that appears to have been squelching further text output. Sorry to be such a dunce.

Well, after starting up runmqtrm at the command line without nohup, leaving the process in the foreground and not redirecting any output, it appears that the trigger is firing, but the application itself is encountering an error of some kind. This is odd in and of itself, because I can run the receive_mrr process manually from the command line as the mqm user and it processes fine (when the trigger fires it, I'm getting some kind of Oracle error).

Thanks for all the help in tracking this down. I inherited the maintenance of a bunch of existing MQSeries servers at the beginning of the year, and haven't had to do anything more than routine maintenance up to this point (stopping/starting MQ, resetting channels, that kind of thing), so a lot of this is new and confusing to me.
Back to top
View user's profile Send private message
JT
PostPosted: Wed Jun 30, 2004 5:58 am    Post subject: Reply with quote

Padawan

Joined: 27 Mar 2003
Posts: 1564
Location: Hartford, CT.

Start at the beginning:
  • Terminate the trigger monitor (SYSTEM.DEFAULT.INITIATION.QUEUE will have an IPPROCS value of 0)
  • Empty MRR.QL
  • Put a message to MRR.QL (CURDEPTH of SYSTEM.DEFAULT.INITIATION.QUEUE should show 1)
  • If so, then you can conclude that the trigger monitor was pulling the message from the SYSTEM.DEFAULT.INITIATION.QUEUE and attempting to invoke your application
  • Check the settings/owner of (/home/pdapps/puradm/bin/receive_mrr
Back to top
View user's profile Send private message
TimDroz
PostPosted: Wed Jun 30, 2004 7:09 am    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

Yep... the problem definitely appears to be in the application itself. The message is never pulled from the MRR.QL queue, although the trigger does fire (as evidenced by the output of the trigger monitor, indicating an error condition in the receive_mrr program). The depth of the initq never goes to 1 (or if it does, that message doesn't stay there long enough to see it).

The oddest part of this is that the mqm ID is the ID under which the QMGR and TRM run, and I can run the receive_mrr process manually using that ID, but when the TRM runs that process we get an error (seems to be Oracle-related).
Back to top
View user's profile Send private message
TimDroz
PostPosted: Wed Jun 30, 2004 8:51 am    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 20

It's actually a C program compiled with the ProC compiler for AIX. But that's not my area of responsibility, I just admininster MQ. I'll pass the information along, though, perhaps there's something there that's equivalent for C that will help.

edit: That's odd... there was a post here that I was responding to, and now it's gone...


Last edited by TimDroz on Wed Jun 30, 2004 8:52 am; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » General IBM MQ Support » Trigger monitor not triggering
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.