Author |
Message
|
muthu_tek |
Posted: Tue Apr 27, 2010 1:35 am Post subject: If Input and Output Node Name are same in MessageFlow |
|
|
Apprentice
Joined: 21 Jan 2010 Posts: 36 Location: Coimbatore,India
|
Dear All,
I have used same name for MQInput and MQOutput Node in Message Flow. I have created one message flow which contain only input and output nodes.Here both queue name are different but node name are same.
When I put message in Input Queue , Message are sending recursively.Its not reach the Output Queue.
What is the reason ?..Thanks in advance.
Thanks,
Marimuthu Udayakumar |
|
Back to top |
|
 |
kimbert |
Posted: Tue Apr 27, 2010 1:44 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
I have used same name for MQInput and MQOutput Node in Message Flow |
That sounds like a very bad idea, unless you have a particular reason why the node names need to be the same.
Quote: |
What is the reason ? |
I don't know. The best way to find out is to take a user trace and look at what the flow is doing. |
|
Back to top |
|
 |
muthu_tek |
Posted: Tue Apr 27, 2010 2:29 am Post subject: |
|
|
Apprentice
Joined: 21 Jan 2010 Posts: 36 Location: Coimbatore,India
|
Thanks for your input kimbert.
kimbert wrote
Quote: |
find out is to take a user trace and look at what the flow is doing. |
I have used user trace and seen the message properties.All MQMD and MQROOT Properties are remain same always.
We know that if both queue name are same, message goes recursively.But I don't understand if node name are same then what internally happening. |
|
Back to top |
|
 |
kimbert |
Posted: Tue Apr 27, 2010 2:42 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
To take a user trace, you use the command line tools mqsichangetrace, mqsireadlog and mqsiformatlog. Did you do that? |
|
Back to top |
|
 |
muthu_tek |
Posted: Tue Apr 27, 2010 4:12 am Post subject: |
|
|
Apprentice
Joined: 21 Jan 2010 Posts: 36 Location: Coimbatore,India
|
Thanks kimbert .
kimbert wrote
kimbert wrote: |
To take a user trace, you use the command line tools mqsichangetrace, mqsireadlog and mqsiformatlog. Did you do that? |
I have tried these commands ( mqsichangetrace, mqsireadlog ) and I think that broker maintaining label name for all the node in the form of "ProjectName.NodeName".So it may be a cause for recursive.
My UserTrace Log : Here My Project Name is 'Sim' and Input & Output Node name is 'MUTHU' and Input Queue name is 'IN' and Output Queue name is 'OUTPUT'. .
Quote: |
UserTraceLog uuid="UserTraceLog" userTraceLevel="none" traceLevel="none" userTraceFilter="trace" traceFilter="none" fileSize="5120000" bufferSize="0" fileMode="safe">
- <UserTrace timestamp="2010-04-27 10:58:15.402643" thread="4980" function="ImbMqOutputNode::putMessage" type="ComIbmMQOutputNode" name="Sim#FCMComposite_1_2" label="Sim.MUTHU" text="'Message received and queued successfully'" catalog="BIPv610" number="2622" file="F:\build\S610_P\src\DataFlowEngine\ImbMqOutputNode.cpp" line="2323">
<Insert type="string">''</Insert>
<Insert type="string">'IN'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.405818" thread="4980" function="ImbCommonInputNode::run" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Dequeued message and propagating to output terminal'" catalog="BIPv610" number="2632" file="F:\build\S610_P\src\DataFlowEngine\ImbCommonInputNode.cpp" line="1503">
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.405879" thread="4980" function="ImbRootParser::parseNextItem" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Created parser'" catalog="BIPv610" number="6060" file="F:\build\S610_P\src\DataFlowEngine\ImbRootParser.cpp" line="425">
<Insert type="string">'Properties'</Insert>
<Insert type="integer">0</Insert>
<Insert type="integer">0</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.405906" thread="4980" function="ImbRootParser::parseNextItem" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Created parser'" catalog="BIPv610" number="6061" file="F:\build\S610_P\src\DataFlowEngine\ImbRootParser.cpp" line="565">
<Insert type="string">'MQMD'</Insert>
<Insert type="integer">0</Insert>
<Insert type="integer">364</Insert>
<Insert type="string">'MQHMD'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.405939" thread="4980" function="ImbRootParser::parseNextItem" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Created parser'" catalog="BIPv610" number="6061" file="F:\build\S610_P\src\DataFlowEngine\ImbRootParser.cpp" line="565">
<Insert type="string">'BLOB'</Insert>
<Insert type="integer">364</Insert>
<Insert type="integer">5</Insert>
<Insert type="string">'NONE'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.406471" thread="4980" function="ImbTraceNode::evaluate" type="ComIbmTraceNode" name="Sim#FCMComposite_1_3" label="Sim.Trace" text="'Propagating to output terminal'" catalog="BIPv610" number="4067" file="F:\build\S610_P\src\DataFlowEngine\ImbTraceNode.cpp" line="352">
<Insert type="string">Sim.Trace</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.406870" thread="4980" function="ImbMqOutputNode::putMessage" type="ComIbmMQOutputNode" name="Sim#FCMComposite_1_2" label="Sim.MUTHU" text="'MQPUT issued to put message to the specified output queue'" catalog="BIPv610" number="2638" file="F:\build\S610_P\src\DataFlowEngine\ImbMqOutputNode.cpp" line="2210">
<Insert type="string">''</Insert>
<Insert type="string">'IN'</Insert>
<Insert type="integer">0</Insert>
<Insert type="integer">0</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.406906" thread="4980" function="ImbMqOutputNode::putMessage" type="ComIbmMQOutputNode" name="Sim#FCMComposite_1_2" label="Sim.MUTHU" text="'Message received and queued successfully'" catalog="BIPv610" number="2622" file="F:\build\S610_P\src\DataFlowEngine\ImbMqOutputNode.cpp" line="2323">
<Insert type="string">''</Insert>
<Insert type="string">'IN'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.408379" thread="4980" function="ImbCommonInputNode::run" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Dequeued message and propagating to output terminal'" catalog="BIPv610" number="2632" file="F:\build\S610_P\src\DataFlowEngine\ImbCommonInputNode.cpp" line="1503">
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.408452" thread="4980" function="ImbRootParser::parseNextItem" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Created parser'" catalog="BIPv610" number="6060" file="F:\build\S610_P\src\DataFlowEngine\ImbRootParser.cpp" line="425">
<Insert type="string">'Properties'</Insert>
<Insert type="integer">0</Insert>
<Insert type="integer">0</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.408482" thread="4980" function="ImbRootParser::parseNextItem" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Created parser'" catalog="BIPv610" number="6061" file="F:\build\S610_P\src\DataFlowEngine\ImbRootParser.cpp" line="565">
<Insert type="string">'MQMD'</Insert>
<Insert type="integer">0</Insert>
<Insert type="integer">364</Insert>
<Insert type="string">'MQHMD'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.408517" thread="4980" function="ImbRootParser::parseNextItem" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Created parser'" catalog="BIPv610" number="6061" file="F:\build\S610_P\src\DataFlowEngine\ImbRootParser.cpp" line="565">
<Insert type="string">'BLOB'</Insert>
<Insert type="integer">364</Insert>
<Insert type="integer">5</Insert>
<Insert type="string">'NONE'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.409158" thread="4980" function="ImbTraceNode::evaluate" type="ComIbmTraceNode" name="Sim#FCMComposite_1_3" label="Sim.Trace" text="'Propagating to output terminal'" catalog="BIPv610" number="4067" file="F:\build\S610_P\src\DataFlowEngine\ImbTraceNode.cpp" line="352">
<Insert type="string">Sim.Trace</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.409386" thread="4980" function="ImbMqOutputNode::putMessage" type="ComIbmMQOutputNode" name="Sim#FCMComposite_1_2" label="Sim.MUTHU" text="'MQPUT issued to put message to the specified output queue'" catalog="BIPv610" number="2638" file="F:\build\S610_P\src\DataFlowEngine\ImbMqOutputNode.cpp" line="2210">
<Insert type="string">''</Insert>
<Insert type="string">'IN'</Insert>
<Insert type="integer">0</Insert>
<Insert type="integer">0</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.409420" thread="4980" function="ImbMqOutputNode::putMessage" type="ComIbmMQOutputNode" name="Sim#FCMComposite_1_2" label="Sim.MUTHU" text="'Message received and queued successfully'" catalog="BIPv610" number="2622" file="F:\build\S610_P\src\DataFlowEngine\ImbMqOutputNode.cpp" line="2323">
<Insert type="string">''</Insert>
<Insert type="string">'IN'</Insert>
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
- <UserTrace timestamp="2010-04-27 10:58:15.409709" thread="4980" function="ImbCommonInputNode::run" type="ComIbmMQInputNode" name="Sim#FCMComposite_1_1" label="Sim.MUTHU" text="'Dequeued message and propagating to output terminal'" catalog="BIPv610" number="2632" file="F:\build\S610_P\src\DataFlowEngine\ImbCommonInputNode.cpp" line="1503">
<Insert type="string">Sim.MUTHU</Insert>
</UserTrace>
|
----------------------
Thanks,
Marimuthu Udayakumar |
|
Back to top |
|
 |
smdavies99 |
Posted: Tue Apr 27, 2010 5:15 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
you forgot to make the output (horrible XML) human readable using the mqsiformatlog as suggested by kimbert.
Please help us by doing that and then posting the relevant parts of the output. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
muthu_tek |
Posted: Tue Apr 27, 2010 5:45 am Post subject: |
|
|
Apprentice
Joined: 21 Jan 2010 Posts: 36 Location: Coimbatore,India
|
Thanks smdavies99. Sorry for my side.
smdavies99 wrote: |
you forgot to make the output (horrible XML) human readable using the mqsiformatlog as suggested by kimbert.
. |
formattrace.log file
Quote: |
BIP2622I: Message successfully output by output node 'Sim.MUTHU' to queue ''IN'' on queue manager ''''.
BIP2632I: Message received and propagated to 'out' terminal of MQ input node 'Sim.MUTHU'.
BIP6060I: Parser type ''Properties'' created on behalf of node 'Sim.MUTHU' to handle portion of incoming message of length 0 bytes beginning at offset '0'.
BIP6061I: Parser type ''MQMD'' created on behalf of node 'Sim.MUTHU' to handle portion of incoming message of length '364' bytes beginning at offset '0'. Parser type selected based on value ''MQHMD'' from previous parser.
BIP6061I: Parser type ''BLOB'' created on behalf of node 'Sim.MUTHU' to handle portion of incoming message of length '5' bytes beginning at offset '364'. Parser type selected based on value ''NONE'' from previous parser.
2010-04-27 16:28:15.406471 4980 UserTrace BIP4067I: Message propagated to output terminal for trace node 'Sim.Trace'.
BIP2638I: The MQ output node 'Sim.MUTHU' attempted to write a message to queue ''IN'' connected to queue manager ''''. The MQCC was '0' and the MQRC was '0'.
BIP2622I: Message successfully output by output node 'Sim.MUTHU' to queue ''IN'' on queue manager ''''.
BIP2632I: Message received and propagated to 'out' terminal of MQ input node 'Sim.MUTHU'.
BIP6060I: Parser type ''Properties'' created on behalf of node 'Sim.MUTHU' to handle portion of incoming message of length 0 bytes beginning at offset '0'.
BIP6061I: Parser type ''MQMD'' created on behalf of node 'Sim.MUTHU' to handle portion of incoming message of length '364' bytes beginning at offset '0'. Parser type selected based on value ''MQHMD'' from previous parser.
BIP6061I: Parser type ''BLOB'' created on behalf of node 'Sim.MUTHU' to handle portion of incoming message of length '5' bytes beginning at offset '364'. Parser type selected based on value ''NONE'' from previous parser.
|
|
|
Back to top |
|
 |
fatherjack |
Posted: Tue Apr 27, 2010 6:23 am Post subject: |
|
|
 Knight
Joined: 14 Apr 2010 Posts: 522 Location: Craggy Island
|
muthu_tek wrote: |
But I don't understand if node name are same then what internally happening. |
If you do a "dis q(<queue>) ipprocs opprocs" I think you might see the flow has either the input or output queue open for both input and output and the other queue not open at all. At least thats what I see. So something has gone a bit screwy.
Strictly speaking maybe a bug but ....... |
|
Back to top |
|
 |
Vitor |
Posted: Tue Apr 27, 2010 6:26 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Looking at the trace, the nodes not only have the same name, but reference the same queue "IN". Possibly the output node is supposed to be referencing a different queue manager? _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
fatherjack |
Posted: Tue Apr 27, 2010 6:39 am Post subject: |
|
|
 Knight
Joined: 14 Apr 2010 Posts: 522 Location: Craggy Island
|
Vitor wrote: |
Looking at the trace, the nodes not only have the same name, but reference the same queue "IN". |
Indeed they do in the trace, but not, I suspect, in the flow. Try it. Lo! and behold dis q(<queuename>) shows the flow getting from and putting to the same queue. Weird. |
|
Back to top |
|
 |
kimbert |
Posted: Tue Apr 27, 2010 7:23 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
I don't see any mention in the trace of the queue 'IN' being used by the input node. However, I'm prepared to believe that the flow is putting and getting to/from the same queue. So...
Change the name of one of the nodes. Does the looping still happen?
What does the .cmf file in the BAR file say? |
|
Back to top |
|
 |
fatherjack |
Posted: Tue Apr 27, 2010 8:00 am Post subject: |
|
|
 Knight
Joined: 14 Apr 2010 Posts: 522 Location: Craggy Island
|
kimbert wrote: |
What does the .cmf file in the BAR file say? |
In my case the bar file doesn't know anything about my MQInput node. Just the MQOutput node. Which I guess kinda explains the behaviour of the flow. But not why the bar file is being built like this. I've seen other flows with duplicate node names and they work OK. Well I hope they do as they're in live. Maybe just MQ In and Out nodes cause this behaviour? |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Apr 27, 2010 8:27 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
It's an absolutely horrible practice to name two nodes the same in the same msgflow file.
Besides being confusing in any attempt to do any troubleshooting, as you have demonstrated yourself it introduces a production risk of unreliable behavior.
Here's a trout: go show it to your developers and explain that they need to write and enforce a reasonable set of coding standards that prevents them from ever naming two nodes the same in the same msgflow file, and all of the other bad practices they are probably following (like using field[i] instead of reference variables). |
|
Back to top |
|
 |
kimbert |
Posted: Tue Apr 27, 2010 9:12 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
But not why the bar file is being built like this. |
Possibly a defect in the BAR file generator.
Quote: |
I've seen other flows with duplicate node names and they work OK. |
It depends how you define 'work' and 'OK'. If you mean 'they process messages successfully today' then you are probably right. If you include the usual non-functional requirements like maintainability and extensibility then it changes things somewhat.
I agree 100% with mqjeff on this. And there is another reason not to have duplicate node names : you'll make it very difficult to add monitoring events to the flow ( and the same applies to duplicate terminal names on the same node ). |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Apr 27, 2010 1:15 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Add to that scripting bar override commands and you can't know anymore if you're overriding the input queue or the output queue....  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|