Author |
Message
|
peteredm |
Posted: Thu Oct 01, 2009 3:23 am Post subject: Failed to put message mqw102 - works to 1 queue but not 2 |
|
|
Newbie
Joined: 23 Jul 2009 Posts: 4
|
Hi all, If I output to 1 mqqueue with 1 MqOutput node in the message flow no error but if I output to 2 exactly the same mqqueue's (just different names) be it in the message flow via 1 mqoutput node or two mqoutput nodes in serial, parrellel or with a flow order node I get the following error after about 1700 messages have gone through it - never errors on the same message twice so thinking some sort of buffer is hit.
Error in debug level user trace is:
Message successfully output by output node 'GetLetters.ECAMISLETTER.IN' to queue ''ECAMISLETTER.IN'' on queue manager ''''.
2009-10-01 09:23:49.306484~87231152 UserTrace BIP2638I: The MQ output node 'GetLetters.ECAMISLET.2GPS' attempted to write a message to queue ''ECAMISLET.2GPS'' connected to queue manager ''''. The MQCC was '2' and the MQRC was '2003'.
2009-10-01 09:23:49.313865~87231152 UserTrace BIP2231E: Error detected whilst processing a message in node 'GetLetters.ECAMISLET.2GPS'.
The message broker detected an error whilst processing a message in node 'GetLetters.ECAMISLET.2GPS'. The message has been augmented with an exception list and has been propagated to the node's failure terminal for further processing.
See the following messages for details of the error.
2009-10-01 09:23:49.313892~87231152 MessageException BIP2667E: An error occurred in node 'GetLetters.ECAMISLET.2GPS' writing message to queue ''ECAMISLET.2GPS'' on queue manager ''''. State = '-1' ''MQW102'' '2003' ''''
An error occurred when a message flow node attempted to write a message to a queue. The reason code from the MQPUT is displayed as the 3rd (native error) state.
Check the WebSphere MQ completion and reason codes in the WebSphere MQ Application Programming Reference manual to establish the cause of the error, taking any appropriate action. It may be necessary to restart the message broker after you have performed this recovery action.
2009-10-01 09:23:49.320739~87231152 UserTrace BIP2539I: Node 'GetLetters.Trace MQOuput Failure': Evaluating expression ''ExceptionList'' at ('', '2.3'). This resolved to ''ExceptionList''. The result was ''ROW... Root Element Type=16777216 NameSpace='' Name='Root' Value=NULL''.
2009-10-01 09:23:49.321029~87231152 UserTrace BIP2539I: Node 'GetLetters.Trace MQOuput Failure': Evaluating expression ''Root'' at ('', '5.3'). This resolved to ''Root''. The result was ''ROW... Root Element Type=16777216 NameSpace='' Name='Root' Value=NULL''.
2009-10-01 09:23:49.321559~87231152 UserTrace BIP4067I: Message propagated to output terminal for trace node 'GetLetters.Trace MQOuput Failure'.
The trace node 'GetLetters.Trace MQOuput Failure' has received a message and is propagating it to any nodes connected to its output terminal.
No user action required.
2009-10-01 09:23:49.321575~87231152 UserTrace BIP4101I: Exception thrown by throw node 'GetLetters.Throw'.
The throw node 'GetLetters.Throw' has received a message and will throw an exception as this is its normal behavior.
No user action required.
And the output from the trace node handling the failure terminal of the MqOutput node is:
EXCEPTION LIST STARTING.....
(
(0x01000000):RecoverableException = (
(0x03000000):File = '/build/S600_P/src/DataFlowEngine/ImbDataFlowNode.cpp'
(0x03000000):Line = 616
(0x03000000):Function = 'ImbDataFlowNode::createExceptionList'
(0x03000000):Type = 'ComIbmMQOutputNode'
(0x03000000):Name = 'GetLetters#FCMComposite_1_8'
(0x03000000):Label = 'GetLetters.ECAMISLET.2GPS'
(0x03000000):Catalog = 'BIPv600'
(0x03000000):Severity = 3
(0x03000000):Number = 2230
(0x03000000):Text = 'Node throwing exception'
(0x01000000):MessageException = (
(0x03000000):File = '/build/S600_P/src/DataFlowEngine/ImbMqOutputNode.cpp'
(0x03000000):Line = 2160
(0x03000000):Function = 'ImbMqOutputNode::putMessage'
(0x03000000):Type = 'ComIbmMQOutputNode'
(0x03000000):Name = 'GetLetters#FCMComposite_1_8'
(0x03000000):Label = 'GetLetters.ECAMISLET.2GPS'
(0x03000000):Catalog = 'BIPv600'
(0x03000000):Severity = 3
(0x03000000):Number = 2667
(0x03000000):Text = 'Failed to put message'
(0x01000000):Insert = (
(0x03000000):Type = 2
(0x03000000):Text = '-1'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'MQW102'
)
(0x01000000):Insert = (
(0x03000000):Type = 2
(0x03000000):Text = '2003'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = ''
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = ''
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'ECAMISLET.2GPS'
)
)
)
)
EXCEPTION LIST ENDED
Any thoughts on this one greeatly appreciated as a bit stumped due to it working when there's only one output mqqueue. |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Oct 01, 2009 4:11 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Are you putting 1700 messages in the same transaction?
Is the log space big enough? |
|
Back to top |
|
 |
peteredm |
Posted: Thu Oct 01, 2009 6:05 am Post subject: |
|
|
Newbie
Joined: 23 Jul 2009 Posts: 4
|
Your right about the transaction logs. Just found the MQ error log and it's last entries are all..
-------------------------------------------------------------------------------
01/10/09 11:28:54 - Process(4328.5) User(wbiadmin) Program(amqzmuc0)
AMQ7469: Transactions rolled back to release log space.
EXPLANATION:
The log space for the queue manager is becoming full. One or more long-running
transactions have been rolled back to release log space so that the queue
manager can continue to process requests.
ACTION:
Try to ensure that the duration of your transactions is not excessive. Consider
increasing the size of the log to allow transactions to last longer before the
log starts to become full.
-------------------------------------------------------------------------------
Yes I'm putting through a lot of messages through in one transaction. Are using the broker with a timeout node to initiate a message flow with a java compute to get many messages out of 1 directory in the file system.
Any pointers on increasing the log size.. primary or secoundry? and could you point me in the direction of what commands to use to obtain current set-up and to increase?
Many thanks |
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 01, 2009 6:09 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
peteredm wrote: |
Yes I'm putting through a lot of messages through in one transaction. Are using the broker with a timeout node to initiate a message flow with a java compute to get many messages out of 1 directory in the file system. |
But do they all need to be in the same transaction? What will happen if you increase the log size, then the file increases and the log fills again? And again, and so on?
peteredm wrote: |
Any pointers on increasing the log size.. primary or secoundry? and could you point me in the direction of what commands to use to obtain current set-up and to increase?
|
Both of these questions have been recently asked and answered in here; the search facility is your friend and will give you the two possible methods. As a tip, there isn't an "change log file command" so don't bother looking.  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
peteredm |
Posted: Thu Oct 01, 2009 6:21 am Post subject: |
|
|
Newbie
Joined: 23 Jul 2009 Posts: 4
|
True, very valid point maybe get the java compute to exit after the first 100 messages to break up the transaction and increase the timeout node interval to process all the messages.
Will also put the search feature to a bit more use!
Thanks for the quick replies mqjeff and Vitor |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Oct 01, 2009 8:20 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
You could just change the MQOutput node to not be in transaction.
You should not be reading from MQ using a JavaCompute node, by the way.
Use MQGet node. Always. |
|
Back to top |
|
 |
|