Author |
Message
|
Tibor |
Posted: Thu Dec 14, 2006 4:45 am Post subject: empty output messages after ugrading CSD08 |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
Last week we installed the last fixpack (CSD08) to our WMB v5.0.1.6 running on AIX (dev & test environment). Since then some message flows resulted empty messages, its contained only MQMD and MQRFH2 headers - without any error or warning messages. I wanted to discover what the problems caused that's why I created a simple message flow with these nodes:
- MQInput (Message Domain = IDOC)
- Compute (IDOC to MRM/TDS conversion)
- Trace
- MQOutput
The output always was an empty message in test enviroment, BUT when I deployed this flow to the production enviroment (patch level CSD06) it worked correctly. Moreover the trace file was same but MQOutput serialized the message tree in different way.
So today we downgraded these environments to CSD06 and since then the 'bad' msgflows runs correctly... Has anyone already seen a similar malfunction?
Thanks in advance,
Tibor
- ESQL code:
Code: |
CREATE COMPUTE MODULE Test_tnt_Compute5
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
--CALL CopyMessageHeaders();
--CALL CopyEntireMessage();
-- reference variables
DECLARE domRef REFERENCE TO OutputRoot;
DECLARE msgRef REFERENCE TO OutputRoot;
DECLARE irecRef REFERENCE TO InputRoot;
DECLARE orecRef REFERENCE TO OutputRoot;
SET Environment.Variables.Output.msgdom = 'MRM';
SET Environment.Variables.Output.msgset = 'DOJU7DC0AM001';
SET Environment.Variables.Output.msgfmt = 'TDS';
SET Environment.Variables.Output.msgtype = 'ZHRMKOR_O';
SET Environment.Variables.Output.msgname = 'ZHRMKOR_O';
SET Environment.Variables.Output.segname = 'z2hrmkor_o';
-- properties & mqmd
SET OutputRoot.Properties = InputRoot.Properties;
SET OutputRoot.MQMD = InputRoot.MQMD;
SET OutputRoot.MQMD.Format = MQFMT_RF_HEADER_2;
-- RFH2 header
SET OutputRoot.MQRFH2.(MQRFH2.Field)Version = 2;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Format = MQFMT_NONE;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Encoding = InputRoot.MQMD.Encoding;
SET OutputRoot.MQRFH2.(MQRFH2.Field)NameValueCCSID = 1208;
CREATE LASTCHILD OF OutputRoot AS domRef
DOMAIN Environment.Variables.Output.msgdom
NAME Environment.Variables.Output.msgdom;
CREATE LASTCHILD OF domRef AS msgRef
NAME Environment.Variables.Output.msgname;
SET msgRef.z2hrmkor_o[] =
(SELECT
A.sdatatag.MRM.stell,
A.sdatatag.MRM.stltx
FROM InputRoot.IDOC.DD[] as A
);
-- Properties.Message[Set|Type|Format]
SET OutputRoot.Properties.MessageSet = Environment.Variables.Output.msgset;
SET OutputRoot.Properties.MessageType = Environment.Variables.Output.msgtype;
SET OutputRoot.Properties.MessageFormat = Environment.Variables.Output.msgfmt;
return true;
END;
END MODULE; |
- Trace output (Root & Environment):
Code: |
--- 2006-12-13 17:23:04.057016 ---
(
(0x01000000):Properties = (
(0x03000000):MessageSet = 'DOJU7DC0AM001'
(0x03000000):MessageType = 'ZHRMKOR_O'
(0x03000000):MessageFormat = 'TDS'
(0x03000000):Encoding = 273
(0x03000000):CodedCharSetId = 819
(0x03000000):Transactional = TRUE
(0x03000000):Persistence = TRUE
(0x03000000):CreationTime = GMTTIMESTAMP '2004-03-26 08:58:30.870'
(0x03000000):ExpirationTime = -1
(0x03000000):Priority = 0
(0x03000000):ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x03000000):ReplyProtocol = 'MQ'
(0x03000000):Topic = NULL
)
(0x01000000):MQMD = (
(0x03000000):SourceQueue = 'TEST_TNT_1'
(0x03000000):Transactional = TRUE
(0x03000000):Encoding = 273
(0x03000000):CodedCharSetId = 819
(0x03000000):Format = 'MQHRF2'
(0x03000000):Version = 2
(0x03000000):Report = 0
(0x03000000):MsgType = 8
(0x03000000):Expiry = -1
(0x03000000):Feedback = 0
(0x03000000):Priority = 0
(0x03000000):Persistence = 1
(0x03000000):MsgId = X'414d5120534d51444556202020202020402b702d2055023f'
(0x03000000):CorrelId = X'000000000000000000000000000000000000000000000000'
(0x03000000):BackoutCount = 0
(0x03000000):ReplyToQ = ' '
(0x03000000):ReplyToQMgr = 'SMQDEV '
(0x03000000):UserIdentifier = 'mqsi '
(0x03000000):AccountingToken = X'0333303100000000000000000000000000000000000000000000000000000006'
(0x03000000):ApplIdentityData = ' '
(0x03000000):PutApplType = 6
(0x03000000):PutApplName = ' '
(0x03000000):PutDate = DATE '2004-03-26'
(0x03000000):PutTime = GMTTIME '08:58:30.870'
(0x03000000):ApplOriginData = ' '
(0x03000000):GroupId = X'000000000000000000000000000000000000000000000000'
(0x03000000):MsgSeqNumber = 1
(0x03000000):Offset = 0
(0x03000000):MsgFlags = 0
(0x03000000):OriginalLength = -1
)
(0x01000000):MQRFH2 = (
(0x03000000):Version = 2
(0x03000000):Format = ' '
(0x03000000):Encoding = 273
(0x03000000):NameValueCCSID = 1208
(0x01000000):usr =
(0x01000000):mcd = (
(0x01000000):Msd = (
(0x02000000): = 'mrm'
)
(0x01000000):Set = (
(0x02000000): = 'DOJU7DC0AM001'
)
(0x01000000):Type = (
(0x02000000): = 'ZHRMKOR_O'
)
(0x01000000):Fmt = (
(0x02000000): = 'TDS'
)
)
)
(0x01000021):MRM = (
(0x01000000):ZHRMKOR_O = (
(0x01000000):z2hrmkor_o = (
(0x0300000B):stell = '02003026'
(0x0300000B):stltx = 'regressziós mtárs 1 '
)
(0x01000000):z2hrmkor_o = (
(0x0300000B):stell = '02003027'
(0x0300000B):stltx = 'regressziós mtárs 2 '
)
...
)
)
)
(
(0x01000000):Variables = (
(0x01000000):Output = (
(0x03000000):msgdom = 'MRM'
(0x03000000):msgset = 'DOJU7DC0AM001'
(0x03000000):msgfmt = 'TDS'
(0x03000000):msgtype = 'ZHRMKOR_O'
(0x03000000):msgname = 'ZHRMKOR_O'
(0x03000000):segname = 'z2hrmkor_o'
)
)
)
|
|
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Dec 14, 2006 5:22 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
It didn't ever work in test, but you put it in production anyway?
And when you upgraded production, it started mirroring what was happening in test?
It's entirely possible for an empty message to be produced as you say, and without any errors or warnings if that is what your code has instructed broker to do.
It's probably that what you have instructed broker to do is create your MRM tree but not associated with the MRM parser. Or you are instructing it to output the wrong things. Or the output tree is not quite where you think it is.
Looking at your trace output, and comparing with http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.etools.mft.fp8.doc/as08560_.htm
I would say that your MRM tree is not associated with the right MRM parser. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Tibor |
Posted: Thu Dec 14, 2006 6:27 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
jefflowrey wrote: |
It didn't ever work in test, but you put it in production anyway? |
Once upon a time there was a huge, very complicated but well functioning message flow. After CSD08 it resulted empty output: messages and retained publications. Then I created a simple message flow only for test purpose.
jefflowrey wrote: |
And when you upgraded production, it started mirroring what was happening in test? |
We didn't upgraded the production because of this error.
jefflowrey wrote: |
...It's probably that what you have instructed broker to do is create your MRM tree but not associated with the MRM parser... |
I think same, BUT what would be the difference between the CSD06 and CSD08? An earlier version can create the byte stream from the message tree For proper parsing it was used the CREATE LASTCHILD ... DOMAIN 'MRM' command in the Compute Node... |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Dec 14, 2006 6:53 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
I'd say the difference between CSD6 and CSD8 is that they fixed the bug that allowed CSD6 to do the wrong thing, and make assumptions about childred of Root named 'MRM'.
But that's just a guess.
You could look at the fixes made in CSD7 and CSD8 and see if any of them talk about fixing issues related to MRM trees. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Tibor |
Posted: Thu Dec 14, 2006 7:10 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
Perhaps these flows are wrong but its works since v2.1!!! I'm going to look round on the support site  |
|
Back to top |
|
 |
Tibor |
Posted: Fri Dec 15, 2006 4:42 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
After a lot of trying I got a desired output message (original code is commented):
Code: |
-- CREATE LASTCHILD OF OutputRoot AS domRef
-- DOMAIN Environment.Variables.Output.msgdom
-- NAME Environment.Variables.Output.msgdom;
-- CREATE LASTCHILD OF domRef AS msgRef
-- NAME Environment.Variables.Output.msgname;
--
CREATE LASTCHILD OF OutputRoot as msgRef
DOMAIN 'MRM'
NAME 'MRM';
SET msgRef.z2hrmkor_o[] =
(SELECT
A.sdatatag.MRM.stell,
A.sdatatag.MRM.stltx
FROM InputRoot.IDOC.DD[] as A
); |
The older version of ESQL followed the hierarchy of message set:
1st level: MRM
2nd level: name of the message
3rd level: name of the repeating type
etc.
However, this is a snippet of the general batch processing flow and I don't know why I should change it becuase of upgrading. This function is mandatory here and I'm afraid of other hidden side-effects.
Up to now there wasn't any problems with CSDs, moreover the upgrading from v2.1 to v5.0 was fluent, too. |
|
Back to top |
|
 |
Tibor |
Posted: Thu Jan 04, 2007 8:29 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
|
Back to top |
|
 |
|