Author |
Message
|
giuly020277 |
Posted: Tue Aug 07, 2007 6:42 am Post subject: Messages on queue when Cics is down |
|
|
 Centurion
Joined: 07 Aug 2007 Posts: 146 Location: Florence,Italy
|
Hello everyone,
i need your help. I proove to explain my problem.
my queue Z/OS receive some messages from an MQ on Sun solaris. When it happen...a trigger start a transaction ( called TMAT)who update some database. it always run correctly until cics is running.During the night....cics is down...and my queue receive messages. At morning...at cics start up transactuion CKTI check initiation queue and start my transaction tmat. this one...get my messages away from my queue...but doesnt update my database. Why?? when it run when cics is running it's all ok. when it run at cics startup...it doesn't update. It depend on application program??
Help me please....it seems that at cics startup transaction does'nt retrieve information about queue....
thanks all
Giuliano |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Aug 07, 2007 6:53 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Is the database started, when CICS is starting?
Are you seeing errors? Is your program abending? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Mr Butcher |
Posted: Tue Aug 07, 2007 6:55 am Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
well you said it gets the message but does not update the database... so it gets information about the queue.
you should do some debugging at the database part..... and make sure you check returncodes properly (and output them somewhere too) _________________ Regards, Butcher |
|
Back to top |
|
 |
giuly020277 |
Posted: Tue Aug 07, 2007 10:41 pm Post subject: |
|
|
 Centurion
Joined: 07 Aug 2007 Posts: 146 Location: Florence,Italy
|
hello ,
thank u for your fast reply.
For jefflowrey
yes...databases are started when cics is starting...and programmer doesn't see an ything wrong about program.
It's strange...because whe cics in up....all things go right: from sun solaris we receive a message. Trigger is on...and run TMAT transaction who update databases and write on another queue on mainframe.
When cics is down...and we have messages on the queue....at starting of Cics....transaction TMAT run...it takes messages from queue...but it doesn't do nothing...
I have to say to programmer to check how it get information from queue?
thanks
Giuliano |
|
Back to top |
|
 |
giuly020277 |
Posted: Tue Aug 07, 2007 11:14 pm Post subject: |
|
|
 Centurion
Joined: 07 Aug 2007 Posts: 146 Location: Florence,Italy
|
...i forget to ask u a thing...
I have to put my transaction TMAT on PLT table of Cics.....to be sure it run at start up of cics....or it automatically start when transaction CKTI detect that there are messages on the queue?? |
|
Back to top |
|
 |
Mr Butcher |
Posted: Tue Aug 07, 2007 11:42 pm Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
if ckti starts and opens the initiation queue, then - if trigger conditions are met - a trigger is created for the application queue that holds messages. So there is no need to put the transaction into the plt (if a transaction is triggered you get the TMC structure passed that holds the queuename you need to procdess. how do you handle that with plt?).
from my point of view there are several possibilities / reasons
1. your program is started too early, and thats whay it fails on the first time
2. your program fails every first time
3. your program is not very error-prone. where is your unit of work (if you get the message, but dont update database and dont write queue?)
4. something else
i would start with checking the MQ and DB2 calls in the program code and verify the return code checkings in the program, and then perform some debugging...... _________________ Regards, Butcher |
|
Back to top |
|
 |
giuly020277 |
Posted: Wed Aug 08, 2007 1:33 am Post subject: |
|
|
 Centurion
Joined: 07 Aug 2007 Posts: 146 Location: Florence,Italy
|
hello,
can u tell me please why u tell me that my transaction is started too early??
Why it should be go wrong all first time?
Thank u for your help
Ciao
Giuliano |
|
Back to top |
|
 |
Mr Butcher |
Posted: Wed Aug 08, 2007 2:54 am Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
why? because it is a bad design, bad setup, bad programming, or all of it, or none of it.
i do not know why it is just a guess or assumption or the way i would approach the problem. you can continue asking, people will answer, everyone with different assumption or guesses, and you will still not know why.
you know the component that fails, you also know when it fails, so what prevents you from investigating and debugging exactly that situation? _________________ Regards, Butcher |
|
Back to top |
|
 |
giuly020277 |
Posted: Wed Aug 08, 2007 11:05 pm Post subject: |
|
|
 Centurion
Joined: 07 Aug 2007 Posts: 146 Location: Florence,Italy
|
hello,
i solved my problem.
the problem was that i had a trigger type of FIRST and programmer has inserted a loop who read all records on queue. Now i have setted trygger type EVERY and now..all things go right.
At Cics startup....ckti let my transaction (TMAT) to run....and it read all messages on queue.
Thank u all
Ciao |
|
Back to top |
|
 |
Mr Butcher |
Posted: Wed Aug 08, 2007 11:34 pm Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
Quote: |
the problem was that i had a trigger type of FIRST and programmer has inserted a loop who read all records on q |
i do not see why this is a problem. this is "normal" processing for a queue trigger first.
from my point of view, your problem still exists. looks like your first trigger fails (somehow), and then because of trigger first you are not triggered again (but in that case it conflicts with your statement that the first message is read because you would be triggered again if you leave a trigger-first-queue non empty).
looks like trigger every circumvents your problem because you are triggered again if a message arrives, and then your program works processing all messages.
well it is up to you to investigate the "true" problem..... _________________ Regards, Butcher |
|
Back to top |
|
 |
kevinf2349 |
Posted: Sun Aug 12, 2007 12:13 pm Post subject: |
|
|
 Grand Master
Joined: 28 Feb 2003 Posts: 1311 Location: USA
|
Quote: |
the problem was that i had a trigger type of FIRST and programmer has inserted a loop who read all records on queue. Now i have setted trygger type EVERY and now..all things go right.
|
I would be extremely surprised if that was the real problem. It sounds to me as if the real problem is syncpoint usage in the TMAT transaction. It is only working on EVERY because the CMIT is being done when each transaction ends. Far from slolving the problem, what you have done is potentially risk a SOS in your CICS region.
Further thought....what does the TMAT transaction actually do in MQ terms? Does it only process one message and then exit or is it processing messages in a loop until it gets a 2033? Either way simply changing the triggering from FIRST to EVERY may very well have design implications for transacton TMAT. |
|
Back to top |
|
 |
|