Author |
Message
|
mqxplorer |
Posted: Thu Oct 03, 2013 6:48 am Post subject: Handling MQInput Errors |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
Hi All,
We are using WMB V7.0.0.4 and I am exploring the Event Monitoring feature and configured the event for Transaction Rollback. I did not connect the Catch terminal of the flow and was expecting One TrabsactionStart and One TransactionRollback, however, I got the events in the following order...
1. TransactionStart
2. TransactionRollback
3. TransactionStart
4. TransactionEnd
When I read the documentation about MQInput node error handling... I got the below info from info Center.
Code: |
Retry processing
The node attempts retry processing when a message is rolled back to the input queue. The node checks whether the message has been backed out before, and if it has, whether the backout count has reached (equalled) the backout threshold. The backout count for each message is maintained by WebSphere® MQ in the MQMD.
You specify (or allow to default to zero(0)) the backout threshold attribute BOTHRESH when you create the queue. If you accept the default value of 0, the node increases this value to one (1). The node also sets the value to 1 if it cannot detect the current value. If the backout threshold is set to 1, the message is processed once but it is not retried through the Out terminal of the MQInput node. To retry the message at least once, set the backout threshold to 2. |
Backout Threshold of my input queue is the default value(0). Based on the above code what I understood is -- When the message rollback to the input queue, the sequence of actions happening are based on the below text from Info Center.
Code: |
You specify (or allow to default to zero(0)) the backout threshold attribute BOTHRESH when you create the queue. If you accept the default value of 0, the node increases this value to one (1). The node also sets the value to 1 if it cannot detect the current value. If the backout threshold is set to 1, the message is processed once but it is not retried through the Out terminal of the MQInput node. |
That is where the Second TransactionStart is emitted and TransactionEnd is emitted when the message is written to the Backout queue. Please correct me, if I am wrong...
And the other question I have is about the below text..
Code: |
the message is processed once but it is not retried through the Out terminal of the MQInput node |
If the message is not retried through the Out terminal of MQInput node, how is it done?
Thanks
mqxplorer |
|
Back to top |
|
 |
mqxplorer |
Posted: Thu Oct 03, 2013 9:37 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
NOBODY to answer this question...????
Thanks
mqxplorer |
|
Back to top |
|
 |
lancelotlinc |
Posted: Thu Oct 03, 2013 9:41 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Quote: |
If the message is not retried through the Out terminal of MQInput node, how is it done? |
Its not. BOTHRESH of zero means that no retry will occur.
You have in front of you the best learning tool of all : the actual product. Experiment with it until you clearly understand that true behavior. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 03, 2013 9:47 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqxplorer wrote: |
NOBODY to answer this question...???? |
What do you think this is, a help desk with an SLA?
You want prompt answers, raise a PMR with the IBM help desk.
Failing that, exercise a little patience. Sometimes even I have to do work for the people who pay my salary rather than post here. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 03, 2013 9:51 am Post subject: Re: Handling MQInput Errors |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqxplorer wrote: |
Please correct me, if I am wrong... |
Do you think you're wrong? What difference would it make if you were? How would that affect your event processing?
mqxplorer wrote: |
And the other question I have is about the below text..
Code: |
the message is processed once but it is not retried through the Out terminal of the MQInput node |
|
Where does it say that?
mqxplorer wrote: |
If the message is not retried through the Out terminal of MQInput node, how is it done? |
Magic.  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqxplorer |
Posted: Fri Oct 04, 2013 11:40 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
lancelotlinc wrote: |
Its not. BOTHRESH of zero means that no retry will occur.
You have in front of you the best learning tool of all : the actual product. Experiment with it until you clearly understand that true behavior. |
I experimented and I see the message not going through the Out terminal of MQInput node with zero BOTHRESH and when I set the BOTHRESH to 2, I see the message going through the Out terminal. However, I am still confused why there is a new TransactionStart event after the TransactionRollback. Any idea why this has happened?
Thanks
mqxplorer |
|
Back to top |
|
 |
lancelotlinc |
Posted: Fri Oct 04, 2013 11:43 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
|
Back to top |
|
 |
mqxplorer |
Posted: Mon Oct 07, 2013 7:24 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
lancelotlinc wrote: |
Please post the output of your Trace node that is just after the MQInput node Out terminal. |
Here is the output....
Code: |
TimeStamp: 2013-10-07 11:16:35.475673
( ['MQROOT' : 0x39d0e80]
(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0x3b75450]
(0x03000000:NameValue):MessageSet = '' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 546 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = TRUE (BOOLEAN)
(0x03000000:NameValue):Persistence = TRUE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2013-09-24 19:30:02.660' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name):MQMD = ( ['MQHMD' : 0x38d0080]
(0x03000000:NameValue):SourceQueue = 'QL.IN' (CHARACTER)
(0x03000000:NameValue):Transactional = TRUE (BOOLEAN)
(0x03000000:NameValue):Encoding = 1 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 819 (INTEGER)
(0x03000000:NameValue):Format = 'MQHRF2 ' (CHARACTER)
(0x03000000:NameValue):Version = 2 (INTEGER)
(0x03000000:NameValue):Report = 0 (INTEGER)
(0x03000000:NameValue):MsgType = 8 (INTEGER)
(0x03000000:NameValue):Expiry = -1 (INTEGER)
(0x03000000:NameValue):Feedback = 0 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):Persistence = 1 (INTEGER)
(0x03000000:NameValue):MsgId = X'414d5120454d4d514d47525f49424d2e7bbd52520f4e0020' (BLOB)
(0x03000000:NameValue):CorrelId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):BackoutCount = 0 (INTEGER)
(0x03000000:NameValue):ReplyToQ = ' ' (CHARACTER)
(0x03000000:NameValue):ReplyToQMgr = 'TESTQMGR_IBM.MQ ' (CHARACTER)
(0x03000000:NameValue):UserIdentifier = 'TEST_USER1 ' (CHARACTER)
(0x03000000:NameValue):AccountingToken = X'0000000000000000000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ApplIdentityData = ' ' (CHARACTER)
(0x03000000:NameValue):PutApplType = 0 (INTEGER)
(0x03000000:NameValue):PutApplName = 'testApp ' (CHARACTER)
(0x03000000:NameValue):PutDate = DATE '2013-09-24' (DATE)
(0x03000000:NameValue):PutTime = GMTTIME '19:30:02.660' (GMTTIME)
(0x03000000:NameValue):ApplOriginData = ' ' (CHARACTER)
(0x03000000:NameValue):GroupId = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):MsgSeqNumber = 1 (INTEGER)
(0x03000000:NameValue):Offset = 0 (INTEGER)
(0x03000000:NameValue):MsgFlags = 0 (INTEGER)
(0x03000000:NameValue):OriginalLength = -1 (INTEGER)
)
(0x01000000:Name):MQRFH2C = ( ['MQHRF2C' : 0x389c200]
(0x03000000:NameValue):Version = 2 (INTEGER)
(0x03000000:NameValue):Format = ' ' (CHARACTER)
(0x03000000:NameValue):Encoding = 1 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Flags = 0 (INTEGER)
(0x03000000:NameValue):NameValueCCSID = 1208 (INTEGER)
(0x01000000:Name ):usr = (
(0x03000000:NameValue):TEST_NAME = 'TestFile.txt' (CHARACTER)
(
(0x03000101:NameValue+):dt = 'string' (CHARACTER)
)
(0x03000000:NameValue):TEST_CONTENT_TYPE = 'text/plain' (CHARACTER)
(
(0x03000101:NameValue+):dt = 'string' (CHARACTER)
)
(0x03000000:NameValue):TEST_CHECKSUM = '/sefdwseafd==' (CHARACTER)
(
(0x03000101:NameValue+):dt = 'string' (CHARACTER)
)
)
(0x03000000:NameValue):TEST_CONTENT_ENCODING = 'gzip' (CHARACTER)
(
(0x03000101:NameValue+):dt = 'string' (CHARACTER)
)
)
)
(0x01000000:Name):BLOB = ( ['none' : 0x38a6020]
(0x03000000:NameValue):UnknownParserName = '' (CHARACTER)
(0x03000000:NameValue):BLOB = X'1f8b0800000000000000bd50c16ac240' (BLOB)
)
) |
This is in case of an exception which is where I am getting another TransactionStart event after the rollback as if the Retry is happening.
Thanks
mqxplorer |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 07, 2013 7:33 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
mqxplorer wrote: |
This is in case of an exception which is where I am getting another TransactionStart event after the rollback as if the Retry is happening.
|
You have not demonstrated this via Trace output. Don't make assumptions about what is happening. PROVE or DISPROVE what is happening.
If you have only one entry in your Trace output, this means that only the original attempt was processed with no retries. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
mqxplorer |
Posted: Mon Oct 07, 2013 7:47 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
lancelotlinc wrote: |
You have not demonstrated this via Trace output. Don't make assumptions about what is happening. PROVE or DISPROVE what is happening.
If you have only one entry in your Trace output, this means that only the original attempt was processed with no retries. |
Yes, I did not demonstrate via Trace Output. I am confident that the retry is not happening. However, I still don't have answer to the question "Why the second TransactionStart event is emitted after the rollback"... This is something I have to answer my teammates and my manager.
Thanks
mqxplorer |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 07, 2013 7:52 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
mqxplorer wrote: |
lancelotlinc wrote: |
You have not demonstrated this via Trace output. Don't make assumptions about what is happening. PROVE or DISPROVE what is happening.
If you have only one entry in your Trace output, this means that only the original attempt was processed with no retries. |
Yes, I did not demonstrate via Trace Output. I am confident that the retry is not happening. However, I still don't have answer to the question "Why the second TransactionStart event is emitted after the rollback"... This is something I have to answer my teammates and my manager.
Thanks
mqxplorer |
Did you get a response on your PMR ? There are some APARs relating to monitoring events that apply to V7. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Vitor |
Posted: Mon Oct 07, 2013 7:53 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqxplorer wrote: |
However, I still don't have answer to the question "Why the second TransactionStart event is emitted after the rollback"... This is something I have to answer my teammates and my manager. |
I thought we discussed this earlier in the thread; the 2nd transaction start is the message going to backout. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqxplorer |
Posted: Mon Oct 07, 2013 8:04 am Post subject: |
|
|
 Master
Joined: 22 Jun 2009 Posts: 206
|
Vitor wrote: |
I thought we discussed this earlier in the thread; the 2nd transaction start is the message going to backout. |
I guess, I did not understand your point earlier. Now I am clear about my second transaction start which is for the message going to backout which is what is happening in my flow.
Thanks a lot Vitor and lancelotlinc ...
Thanks
mqxplorer |
|
Back to top |
|
 |
|