Author |
Message
|
lillo |
Posted: Wed Oct 15, 2003 11:36 pm Post subject: Error writing to a queue after upgrade from CSD2 to CSD5 |
|
|
Master
Joined: 11 Sep 2001 Posts: 224
|
I got an error when I try to write a MRM to a queue. Below is the exception list and the message. WMQI 2.1 is installed on Windows NT and MQ5.3CSD4.
I got in the event viewer this error also:
Quote: |
Error '4' converting a character string to or from codepage '842'.
A character conversion between codepages has failed. This may be due to an invalid codepage being specified in the header of a message, or may be due to a character being present in a message that does not appear in the required codepage conversion table.
Check that the application that generated the message is using a valid codepage in the message header and that all characters used are valid in that codepage. |
Any idea?
TIA
Quote: |
ExceptionList:
(
(0x1000000)RecoverableException = (
(0x3000000)File = 'F:\build\S210_P\src\DataFlowEngine\ImbDataFlowNode.cpp'
(0x3000000)Line = 536
(0x3000000)Function = 'ImbDataFlowNode::createExceptionList'
(0x3000000)Type = 'ComIbmMQOutputNode'
(0x3000000)Name = 'fdd6a643-f800-0000-0080-961644504261'
(0x3000000)Label = 'Return flow.MQOutput1'
(0x3000000)Text = 'Node throwing exception'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)ParserException = (
(0x3000000)File = 'F:\build\S210_P\src\MTI\MTIforBroker\MtiImbParser2\MtiImbParser.cpp'
(0x3000000)Line = 1112
(0x3000000)Function = 'MtiImbParser::refreshBitStreamFromElements - 9 par'
(0x3000000)Type = 'ComIbmMQInputNode'
(0x3000000)Name = 'ffadcdcf-f100-0000-0080-9ae2c72c67a4'
(0x3000000)Label = 'Return flow.REPLY.Q01
(0x3000000)Text = 'ImbRecoverableException caught from worker when attempting to write out the bitstream.'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5286
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'ERROR_MSGSET'
)
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '1'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'CWF9'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'ERROR_MSG'
)
(0x1000000)ParserException = (
(0x3000000)File = 'F:\build\S210_P\src\cpi\pwf\cwf\cwfworker.cpp'
(0x3000000)Line = 290
(0x3000000)Function = 'CWFWorker::write'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'CWF General Error'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5167
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '0'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'CWFWorker::write'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'ERROR_MSG'
)
(0x1000000)ParserException = (
(0x3000000)File = 'F:\build\S210_P\src\cpi\pwf\cwf\cwfmessage.cpp'
(0x3000000)Line = 383
(0x3000000)Function = 'CMessage::write'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'CWF The padding of a string failed during write'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5350
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '0'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'CWFWorker::parseNext'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'ERROR_MSG'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = '/ERROR_MSG/ERROR_HEADER'
)
(0x1000000)RecoverableException = (
(0x3000000)File = 'F:\build\S210_P\src\cpi\bsutils\cpunicodeconverter.cpp'
(0x3000000)Line = 44
(0x3000000)Function = 'cpunicodeconverter::cpunicodeconverter'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'Error creating convertor'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2130
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '842'
)
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '4'
)
)
)
)
)
)
)
===============
Root:
(
(0x1000000)Properties = (
(0x3000000)MessageSet = 'DPRGKNG08I001'
(0x3000000)MessageType = 'ERROR_MSG'
(0x3000000)MessageFormat = 'CWF9'
(0x3000000)Encoding = 546
(0x3000000)CodedCharSetId = 850
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = FALSE
(0x3000000)CreationTime = GMTTIMESTAMP '2003-10-16 07:22:20.750'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'414d51204d505344534430312020202074408c3f2000571b'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'REPLY.Q01'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 546
(0x3000000)CodedCharSetId = 850
(0x3000000)Format = 'MQSTR '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 0
(0x3000000)MsgId = X'414d51204d505344534430312020202074408c3f20008b5c'
(0x3000000)CorrelId = X'414d51204d505344534430312020202074408c3f2000571b'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = 'RESPONSE.Q01'
(0x3000000)ReplyToQMgr = 'QMGR0001 '
(0x3000000)UserIdentifier = 'WMQIUSER '
(0x3000000)AccountingToken = X'160105150000006433c1779a48e75dac430c304465000000000000000000000b'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 11
(0x3000000)PutApplName = 'rfhutilc.exe'
(0x3000000)PutDate = DATE '2003-10-16'
(0x3000000)PutTime = GMTTIME '07:22:20.750'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x100001B)MRM = (
(0x300000B)ERROR_HEADER = 'SOAK 000020031015161525001010000 R0000160091615250 000000000000000020031015073001'
(0x300000B)ERROR_FLAG = 'ER'
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = 'REFERENCE ALREADY PROCESSED '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
(0x1000013)REPEAT = (
(0x300000B)ERROR_CODE = '000'
(0x300000B)ERROR_TEXT = ' '
)
)
)
===============
|
_________________ Lillo
IBM Certified Specialist - WebSphere MQ
Last edited by lillo on Thu Oct 16, 2003 4:44 am; edited 1 time in total |
|
Back to top |
|
 |
JLRowe |
Posted: Thu Oct 16, 2003 3:48 am Post subject: |
|
|
 Yatiri
Joined: 25 May 2002 Posts: 664 Location: South East London
|
The problem is that you have a character in your message tree which cannot be represented when serialising the message.
I notice that your MQMD has a CCSID of 850, your CWF has a CCSID of 842. I think what is happening is that MRM is serialising your message tree (which is in unicode, CCSID 1208) to 842 (WMQI does the conversion), the output node is placing this message on the destination queue with a CCSID of 850 (WMQ does the conversion).
So, you have 2 conversions going on, 1208 -> 842 and 842 -> 850. Somewhere, you have a character which has no equivalent in the destination code page.
You could try changing your CWF and MQMD CCSID's to 1208. Personally, I always try to WMQ process messages in 1208. |
|
Back to top |
|
 |
lillo |
Posted: Thu Oct 16, 2003 4:46 am Post subject: |
|
|
Master
Joined: 11 Sep 2001 Posts: 224
|
Thanks for your response.
Where did you get 842 from? It is not a supported CCSID.
BTW, if I change the message flow to an empty execution group, everything works. _________________ Lillo
IBM Certified Specialist - WebSphere MQ |
|
Back to top |
|
 |
JLRowe |
Posted: Thu Oct 16, 2003 5:08 am Post subject: |
|
|
 Yatiri
Joined: 25 May 2002 Posts: 664 Location: South East London
|
"Error '4' converting a character string to or from codepage '842'. "
and
"(0x3000000)Text = '842' " |
|
Back to top |
|
 |
lillo |
Posted: Thu Oct 16, 2003 5:22 am Post subject: |
|
|
Master
Joined: 11 Sep 2001 Posts: 224
|
Where do I specify this CCSID to convert to it? _________________ Lillo
IBM Certified Specialist - WebSphere MQ |
|
Back to top |
|
 |
JLRowe |
Posted: Thu Oct 16, 2003 6:09 am Post subject: |
|
|
 Yatiri
Joined: 25 May 2002 Posts: 664 Location: South East London
|
You need to set the CWF CCSID in the wire format properties.
And set the MQMD CCSID with:
SET OutputRoot.Properties.CodedCharSetId = 1208;
The Properties parser will update the MQMD.CodedCharSetId value on exit from the node containing the above code. |
|
Back to top |
|
 |
lillo |
Posted: Thu Oct 16, 2003 6:19 am Post subject: |
|
|
Master
Joined: 11 Sep 2001 Posts: 224
|
Do you mean the Default CCSID in the Message set tab? Actually my value is 500 (default). _________________ Lillo
IBM Certified Specialist - WebSphere MQ |
|
Back to top |
|
 |
jfluitsm |
Posted: Sun Oct 19, 2003 6:30 am Post subject: |
|
|
Disciple
Joined: 24 Feb 2002 Posts: 160 Location: The Netherlands
|
Actual WMQI uses UCS-2 as internal CCSID, but this doesn't matter for the problem.
The CCSID of the message on the queue will be the same as stated in OutputRoot.Properties.CodedCharSetId, disregarding the default for MRM or the default for the QM, the default of the QM is used for the MQMD.
Your problem migh be 842, I could not fine a definition for it, so it might not exists.
I would sugest to allways use readable messages, state the length of the fields in characters instead of bytes, write your message in UTF-8 (CCSID 1208 ,as jlrowe already wrote) and do the conversion on the receiving side. In this way your broker will never fail on charactersets and doesn't need any knowledge of the CCSID used by the target application and most used characters will be 1 byte long. _________________ Jan Fluitsma
IBM Certified Solution Designer WebSphere MQ V6
IBM Certified Solution Developer WebSphere Message Broker V6 |
|
Back to top |
|
 |
|