Author |
Message
|
RB |
Posted: Mon Apr 16, 2012 4:11 am Post subject: Parser exception while writing the SWIFT data |
|
|
Acolyte
Joined: 23 May 2006 Posts: 56
|
Hi,
We are trying out to implement a scenario where I am trying to convert the XML message to the SWIFT structure using single message definition as given below using Message Broker 6.1.x.
The incoming message is a SWIFT message with a custom header/trailer values. We have created one message set to define the header and trailer fields, and the field defining the SWIFT body is referring to the definitions in another message set. We have added both XML and SWIFT physical formats to the message sets.
The incoming message is in the xml format confirming to the message defined and one trace node kept after the mqinput node is able to parse and show the full tree structure (header, body and trailer fields are parsed successfully!). The compute node is a pass through, with one extra line to reset the physical format to SWIFT. I am getting the below error while trying to write the output to the queue!
Code: |
(0x01000000:Name ):ParserException = (
(0x03000000:NameValue):File = '/build/S610P/src/cpi/pwf/nxd/tdswriter.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 269 (INTEGER)
(0x03000000:NameValue):Function = 'CTDSWriter::write' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 1 (INTEGER)
(0x03000000:NameValue):Number = 5447 (INTEGER)
(0x03000000:NameValue):Text = 'TDS writing error' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '/MT900(1 of unbounded)' (CHARACTER)
)
(0x01000000:Name ):ParserException = (
(0x03000000:NameValue):File = '/build/S610P/src/cpi/pwf/nxd/tdswritercomplexnode.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 302 (INTEGER)
(0x03000000:NameValue):Function = 'CTDSWriterComplexNode::IdentifyFlexible' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 5453 (INTEGER)
(0x03000000:NameValue):Text = 'Incoming message not defined.' (CHARACTER) |
We have already verified the values in the properties section of message tree and is correctly showing the one corresponding to our message set, but still getting this error! Please let us know in case you could help us to resolve this?
Regards,
RB |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Apr 16, 2012 5:06 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
|
Back to top |
|
 |
kimbert |
Posted: Mon Apr 16, 2012 5:36 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
lancelotlinc said:
Quote: |
Specify your versions of runtime, toolkit, and SWIFT pack |
RB did not say that he is using a SWIFT pack. He may have designed the SWIFT physical format himself.
Quote: |
I am trying to convert the XML message to the SWIFT structure using single message definition as given below using Message Broker 6.1.x. |
How did you create your SWIFT message definition? Has it ever worked?
Quote: |
I am getting the below error while trying to write the output to the queue! |
That error is of no use at all. Look in Windows Event Viewer -there will be at least three errors there, and one of them will give a *lot* more detail that you have posted.
Quote: |
We have already verified the values in the properties section of message tree and is correctly showing the one corresponding to our message set, but still getting this error! |
Well, the SWIFT format is a known 'hard case'. Converting from an XML structure to a SWIFT format is a hard problem, and the TDS parser is doing a *lot* of work for you. Don't be surprised that it did not work first time.
Please answer all of the questions above, and then I should be able to give some hints on how to diagnose the problem. |
|
Back to top |
|
 |
RB |
Posted: Mon Apr 16, 2012 5:50 am Post subject: |
|
|
Acolyte
Joined: 23 May 2006 Posts: 56
|
Here are the details -
Runtime -6.1.x on zOS (not sure on the exact fix pack level) Toolkit - Version: 6.1.0 Build id: 6.1.0-20071108_1112, Swift pack is – Swift 2011 custom extended char set pack
We are using the SWIFT pack, but we need to model for a custom header and trailer, trying to define those details in a new message set!
Broker is running on zOS, and the complete exception list is as given below. Not sure if this is of much help!
Code: |
( ['MQROOT' : 0x2afdfee8]
(0x01000000:Name):RecoverableException = (
(0x03000000:NameValue):File = '/build/S610P/src/DataFlowEngine/ImbMqOutputNode.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 918 (INTEGER)
(0x03000000:NameValue):Function = 'ImbMqOutputNode::evaluate' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmMQOutputNode' (CHARACTER)
(0x03000000:NameValue):Name = 'Test_IATA#FCMComposite_1_2' (CHARACTER)
(0x03000000:NameValue):Label = 'Test_IATA.MQOutput' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 2230 (INTEGER)
(0x03000000:NameValue):Text = 'Caught exception and rethrowing' (CHARACTER)
(0x01000000:Name ):ParserException = (
(0x03000000:NameValue):File = '/build/S610P/src/MTI/MTIforBroker/MtiImbParser2/MtiImbParser.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 1891 (INTEGER)
(0x03000000:NameValue):Function = 'MtiImbParser::refreshBitStreamFromElements - 9 par' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmMQInputNode' (CHARACTER)
(0x03000000:NameValue):Name = 'Test_IATA#FCMComposite_1_1' (CHARACTER)
(0x03000000:NameValue):Label = 'Test_IATA.MQInput' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 5286 (INTEGER)
(0x03000000:NameValue):Text = 'ImbRecoverableException caught from worker when attempting to write out the bitstream.' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'MSET_NAME' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 2 (INTEGER)
(0x03000000:NameValue):Text = '1' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'SWIFT' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '/MSET_TYPE_NAME' (CHARACTER)
)
(0x01000000:Name ):ParserException = (
(0x03000000:NameValue):File = '/build/S610P/src/cpi/pwf/nxd/tdswriter.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 269 (INTEGER)
(0x03000000:NameValue):Function = 'CTDSWriter::write' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 1 (INTEGER)
(0x03000000:NameValue):Number = 5447 (INTEGER)
(0x03000000:NameValue):Text = 'TDS writing error' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '/MT900(1 of unbounded)' (CHARACTER)
)
(0x01000000:Name ):ParserException = (
(0x03000000:NameValue):File = '/build/S610P/src/cpi/pwf/nxd/tdswritercomplexnode.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 302 (INTEGER)
(0x03000000:NameValue):Function = 'CTDSWriterComplexNode::IdentifyFlexible' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 5453 (INTEGER)
(0x03000000:NameValue):Text = 'Incoming message not defined.' (CHARACTER)
)
)
)
)
) |
|
|
Back to top |
|
 |
kimbert |
Posted: Mon Apr 16, 2012 5:58 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
Broker is running on zOS, and the complete exception list is as given below. Not sure if this is of much help! |
No - no help at all, I'm afraid.
Sorry to bring you bad news, but you have some work ahead of you. Modelling a data format is a technical task and requires a proper understanding of the data, the modelling language and the diagnostic tools that are available. If you expected to tweak the model, hit 'go' and then put your feet up then you're in for a shock .
My suggested next steps are:
- ignore the SWIFT body. Just model the header and the trailer and get that part working
- when you get errors, take a debug-level user trace and read what the TDS parser is telling you. If you don't know how to take a user trace, now would be an excellent time to learn.
- when you have tried out a few things, feel free to ask some specific questions about how to solve your problem. But make sure you ask questions that we can answer - I cannot tell you why your header is not being written unless I know exactly what the header should look like, exactly what your message tree looks like, and exactly what your TDS model looks like. |
|
Back to top |
|
 |
RB |
Posted: Mon Apr 16, 2012 6:31 am Post subject: |
|
|
Acolyte
Joined: 23 May 2006 Posts: 56
|
I will try this out tomorrow and will let u guys know..if I remember correctly, we had already verified the header and trailer part generation, but again let me verify this..
Yes, I am aware of the user trace, but unfortunately the client environment I am working is having lot of restrictions - they do not allow us to run trace commands! |
|
Back to top |
|
 |
Vitor |
Posted: Mon Apr 16, 2012 6:39 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
RB wrote: |
Yes, I am aware of the user trace, but unfortunately the client environment I am working is having lot of restrictions - they do not allow us to run trace commands! |
That's the 2nd time in here I've heard of a client not allowing trace. I would repeat the advice given then; ask the client how you're expected to develop without access to the development tools, and if the client management is aware how much extra it's costing in terms of effort without these tools.
It's also worth exploring if the restriction is a technical one (the command's been restricted) or a polictical one (it's just not allowed). The latter can be lifted at a decision, and the former is often poorly implemented.....  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Apr 16, 2012 8:04 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
6.1.x is not a valid version. 6.1.0.4? 6.1.0.8? I believe 6.1.0.11 is the most recent. It is important to know this. There may be APARs that would solve the problem you are experiencing.
If you are not permitted to use Service Trace, use log4j. Also ask the sysadmins to send you the output of the /var/adm/debug.log. And the output of the stderr file of the Execution Group.
Service Trace would be ideal.
When you run this flow on your development environment, what do you see? When you run this flow on your sandbox environment, what do you see? Better to get this flow running in the dev environment and the sandbox env first, then move it to z/OS. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
mqjeff |
Posted: Mon Apr 16, 2012 8:08 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
lancelotlinc wrote: |
If you are not permitted to use Service Trace, use log4j. |
It's a great idea, except that there's no guarantee that RB will be allowed to write to a file on the file system.
Presumably, it's easier to ask a system's admin to run the user/service trace than it is to rewrite the entire flow to add logging.
It *may* be a better idea to rewrite the entire flow to add logging. but, again, it may not be feasible for the same reason it's not feasible for RB to run user/service trace. No access! |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Apr 16, 2012 8:19 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
mqjeff wrote: |
lancelotlinc wrote: |
If you are not permitted to use Service Trace, use log4j. |
It's a great idea, except that there's no guarantee that RB will be allowed to write to a file on the file system.
Presumably, it's easier to ask a system's admin to run the user/service trace than it is to rewrite the entire flow to add logging.
It *may* be a better idea to rewrite the entire flow to add logging. but, again, it may not be feasible for the same reason it's not feasible for RB to run user/service trace. No access! |
I agree with you.
Just fyi for further research: log4j has several Network Appenders:
SocketAppender - it sends LoggingEvent objects to a remote a log server, usually a SocketNode.
SocketHubAppender - it sends LoggingEvent objects to a set of remote log servers, usually SocketNodes .
JMSAppender - A simple appender that publishes events to a JMS Topic. The events are serialized and transmitted as JMS message type ObjectMessage. .
NTEventLogAppender - Append to the NT event log system. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
mqjeff |
Posted: Mon Apr 16, 2012 8:29 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
lancelotlinc wrote: |
Just fyi for further research: log4j has several Network Appenders: |
Again, that requires that the broker in question is allowed to access the network. And that there's a meaningful other network location to receive the information. |
|
Back to top |
|
 |
Vitor |
Posted: Mon Apr 16, 2012 8:35 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Erm...
lancelotlinc wrote: |
If you are not permitted to use Service Trace, use log4j. Also ask the sysadmins to send you the output of the /var/adm/debug.log. And the output of the stderr file of the Execution Group. |
...
RB wrote: |
Runtime -6.1.x on zOS |
So the logs are not quite in those locations. And it's likely log4j won't work for the same reason trace won't work.
And network access is even less likely to work. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
kimbert |
Posted: Mon Apr 16, 2012 10:14 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
The TDS parser is a c++ component. The information provided by a debug-level user trace cannot be obtained from log4j, nor from any other source.
A service trace would contain the same information as a debug-level user trace, plus megabytes of probably-useless information about the internals of the component. |
|
Back to top |
|
 |
RB |
Posted: Tue Apr 17, 2012 3:50 am Post subject: |
|
|
Acolyte
Joined: 23 May 2006 Posts: 56
|
Thanks a lot guys for your response. We are having zOS for all our environments - DEV/Sandbox and Test. So don’t have much help with the user trace. We are trying to get this enabled, but not successful yet.
I verified the wrapper message set once again, and it was creating the output correctly! I have got it working by importing the swift message definitions in to the wrapper message set itself. Not sure whether this should have made any difference, but it is able to write the output with this change!
Regards,
RB |
|
Back to top |
|
 |
|