Author |
Message
|
tiredandconfused |
Posted: Tue Nov 29, 2005 9:57 am Post subject: Cant recreate message from BLOB |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
Greetings Omnipotent Ones,
I know there are numerous postings on this subject (I know because I think I have looked at all of them but cant find a solution) but I'm having a problem recreating my message from a BLOB.
My environment is ;
Database is Oracle 10gR1
ODBC driver = DataDirect Technologies 5.0 32 bit Oracle
ODBC DSN EnableSQLDescribe parm checked.
(Both workarounds added to windows registry)
O/S = Win XP Pro SP1
WBIMB 6.0
WMQ 6.0
My situation is a simple flow that is intitated by a Timer Node. The first compute node connected to the timer adds an MQMD. The next compute node retrieves all rows from an oracle table that are in error status. These rows were previously added by another flow which saved the message body in a BLOB and inserted it into a column in the table defined as a BLOB.;
DECLARE BLOB_DATA BLOB;
SET BLOB_DATA = ASBITSTREAM(InputRoot.XMLNS, InputRoot.MQMD.Encoding, InputRoot.MQMD.CodedCharSetId);
INSERT etc
My retrieval compute node executes the following code to recreate the message from the BLOB.
SET Environment.RESULTSET.*[] = (SELECT A.BLOB_DATA, A.STATUS_ID, A.NEXT_SEND_ATTEMPT_DATE FROM Database.xxxxxx AS A WHERE A.STATUS_ID = STATUS_ID);
DECLARE X INTEGER CARDINALITY(Environment.RESULTSET.*[]) + 1;
DECLARE Y INTEGER 1;
WHILE Y < X DO
CALL CopyMessageHeaders();
CREATE LASTCHILD OF OutputRoot DOMAIN ('XMLNS') PARSE(Environment.RESULTSET.[Y].BLOB_DATA, InputRoot.MQMD.Encoding, InputRoot.MQMD.CodedCharSetId);
PROPAGATE;
SET Y = Y + 1;
END WHILE;
The Encoding and CCSID attributes match when the BLOB was created and during the attempt to recreate above.
The error I am getting on the PROPAGATE statement is simply 'Value is Invalid'. The Windows Event Log information says 'An unexpected NULL value was encountered.' and the trace data does not appear to say anymore than this.
I am not worthy and look forward to receiving your imparted wisdom. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Nov 29, 2005 10:08 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Does your ESQL main routine end with "RETURN FALSE;", which will ensure that the node doesn't send out an empty tree after your loop has finished?
Are you getting any additional error messages in the Event Viewer?
What happens when you try to only process the first message - without using PROPAGATE? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tiredandconfused |
Posted: Tue Nov 29, 2005 2:35 pm Post subject: |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
Hi Jeff,
Yes the routine ends with RETURN FALSE;
I have tried processing the first message with exactly the same result.
Here is some of the trace data ;
2005-11-29 13:47:14.429349 2940 Error BIP4623E: Exception condition detected: object label 'TimerFLow.TimeoutNotification'; input node '{1}'.
An input node detected an error whilst processing a message. The message flow has been rolled back. Following messages will indicate the cause of this exception which was generated in the STL container classes.
Check the error messages which follow to determine why the exception was generated, and take action as described by those messages.
2005-11-29 13:47:14.429373 2940 RecoverableException BIP2230E: Error detected whilst processing a message in node 'TimerFLow.Iterate for Pending'.
The message broker detected an error whilst processing a message in node 'TimerFLow.Iterate for Pending'. An exception has been thrown to cut short the processing of the message.
See the following messages for details of the error.
2005-11-29 13:47:14.429386 2940 RecoverableException BIP2329E: An unexpected NULL value was encountered.
This message will be accompanied with others which will give the higher level context for this error. Look at these other messages to determine the root source of the problem.
2005-11-29 13:47:15.429312 2940 UserTrace BIP4629I: Timeout request being processed by node 'TimerFLow.TimeoutNotification'
There is no further info. I'm wondering if its related to Oracle data types. |
|
Back to top |
|
 |
tiredandconfused |
Posted: Tue Nov 29, 2005 2:47 pm Post subject: |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
Here is some more trace data from where the CREATE statement is executed. (There is a subtle difference in this data as this is from a test I did where I substituted CREATE LASTCHILD OF OutputRoot DOMAIN ('XMLNS') PARSE(Environment.RESULTSET.[Y].BLOB_DATA, InputRoot.MQMD.Encoding, InputRoot.MQMD.CodedCharSetId); with
CREATE LASTCHILD OF OutputRoot DOMAIN ('XMLNS') PARSE(BLOBDATA, InputRoot.MQMD.Encoding, InputRoot.MQMD.CodedCharSetId);
and had previously set BLOBDATA to the value retrieved from the DB.
2005-11-29 13:47:14.411389 2940 UserTrace BIP2537I: Node 'TimerFLow.Iterate for Pending': Executing statement ''CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNS' PARSE(BLOBDATA, InputRoot.MQMD.Encoding, InputRoot.MQMD.CodedCharSetId);'' at ('.TimerFlow_IterateforPending.Main', '31.3').
2005-11-29 13:47:14.411841 2940 UserTrace BIP2539I: Node 'TimerFLow.Iterate for Pending': Evaluating expression ''BLOBDATA'' at ('.TimerFlow_IterateforPending.Main', '31.55'). This resolved to ''BLOBDATA''. The result was ''X'3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d38223f3e0d0a3c526567697374726174696f6e52657175657374456e7620786d6c6e733d22687474703a2f2f7777772e6570732e6e64732e73636f742e6e68732e756b2220786d6c6e733a64733d22687474703a2f2f7777772e77332e6f72672f323030302f30392f786d6c64736967232220786d6c6e733a7873693d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d612d696e7374616e636522207873693a736368656d614c6f636174696f6e3d22687474703a2f2f7777772e6570732e6e64732e73636f742e6e68732e756b20526567697374726174696f6e52657175657374456e762d76312d312e7873642220536368656d6156657273696f6e3d22312e31223e0d0a093c5472616e73616374696f6e48656164657220536368656d6156657273696f6e3d22312e31223e0d0a09093c4d73675072696f726974793e696d6d6564696174653c2f4d73675072696f726974793e0d0a09093c4d73675374617475733e6c6976653c2f4d73675374617475733e0d0a09093c53656e64657244657461696c733e0d0a0909093c4f7267616e69736174696f6e547970653e706861726d6163793c2f4f7267616e69736174696f6e547970653e0d0a0909093c4f7267616e69736174696f6e49443e353637383c2f4f7267616e69736174696f6e49443e0d0a0909093c4f7267616e69736174696f6e4e616d653e5765737420526f6164204368656d697374733c2f4f7267616e69736174696f6e4e616d653e0d0a09093c2f53656e64657244657461696c733e0d0a09093c536f6674776172653e0d0a0909093c50726f647563744e616d652050726f6475637456657273696f6e3d2250726f647563742056657273696f6e223e50726f64756374204e616d653c2f50726f647563744e616d653e0d0a0909093c50726f64756374417574686f723e50726f6475637420417574686f723c2f50726f64756374417574686f723e0d0a09093c2f536f6674776172653e0d0a09093c417070536572766963654e616d65205365727669636556657273696f6e3d22332e3134223e5052533c2f417070536572766963654e616d653e0d0a09093c4170705354544c3e31303030303c2f4170705354544c3e0d0a09093c4170705472616e7349443e34326662316439612d376230652d343866642d393837662d3230376230396564323936383c2f4170705472616e7349443e0d0a09093c4170705472616e73537465705265663e313c2f4170705472616e73537465705265663e0d0a09093c4170705472616e734461746554696d653e323030342d31312d33305430393a33303a34373c2f4170705472616e734461746554696d653e0d0a09093c4d736743617465676f72793e73696e676c653c2f4d736743617465676f72793e0d0a09093c417070426f6479547970655174793e313c2f417070426f6479547970655174793e0d0a09093c426f6479446566696e6974696f6e733e0d0a0909093c426f6479446566696e6974696f6e3e0d0a090909093c4e616d653e526567697374726174696f6e526571756573743c2f4e616d653e0d0a090909093c506f736974696f6e3e313c2f506f736974696f6e3e0d0a090909093c436f756e743e313c2f436f756e743e0d0a090909093c5369676e696e673e747275653c2f5369676e696e673e0d0a0909093c2f426f6479446566696e6974696f6e3e0d0a09093c2f426f6479446566696e6974696f6e733e0d0a093c2f5472616e73616374696f6e4865616465723e0d0a093c417070426f646965733e0d0a09093c526567697374726174696f6e5265717565737420536368656d6156657273696f6e3d22312e31223e0d0a0909093c53656e64657244657461696c733e0d0a090909093c4f7267616e69736174696f6e3e0d0a09090909093c4f7267616e69736174696f6e49643e0d0a0909090909093c496456616c75653e353637383c2f496456616c75653e0d0a09090909093c2f4f7267616e69736174696f6e49643e0d0a09090909093c4f7267616e69736174696f6e4e616d653e5765737420526f6164204368656d697374733c2f4f7267616e69736174696f6e4e616d653e0d0a09090909093c4f7267616e69736174696f6e547970653e706861726d6163793c2f4f7267616e69736174696f6e547970653e0d0a09090909093c416464726573733e0d0a0909090909093c416464726573734c696e65733e0d0a090909090909093c416464726573734c696e653e33205765737420526f61643c2f416464726573734c696e653e0d0a090909090909093c416464726573734c696e653e57657374766965773c2f416464726573734c696e653e0d0a0909090909093c2f416464726573734c696e65733e0d0a0909090909093c506f7374436f64653e543132203354413c2f506f7374436f64653e0d0a0909090909093c54656c6570686f6e654e6f3e30313131203938373635343c2f54656c6570686f6e654e6f3e0d0a09090909093c2f416464726573733e0d0a09090909093c514153636f64653e30313233343536373839303938373635343c2f514153636f64653e0d0a090909093c2f4f7267616e69736174696f6e3e0d0a090909093c4865616c74686361726550726f66657373696f6e616c3e0d0a09090909093c48637049643e0d0a0909090909093c50726f66436f64653e393837363534333c2f50726f66436f64653e0d0a0909090909093c50726f66436f6465536368656d653e52505347423c2f50726f66436f6465536368656d653e0d0a0909090909093c50726f66547970653e706861726d61636973743c2f50726f66547970653e0d0a09090909093c2f48637049643e0d0a09090909093c4863704e616d653e0d0a0909090909093c537472756374757265644e616d653e0d0a090909090909093c5469746c653e4d72733c2f5469746c653e0d0a090909090909093c46616d696c794e616d653e57686974653c2f46616d696c794e616d653e0d0a090909090909093c476976656e4e616d653e4d6172793c2f476976656e4e616d653e0d0a0909090909093c2f537472756374757265644e616d653e0d0a09090909093c2f4863704e616d653e0d0a090909093c2f4865616c74686361726550726f66657373696f6e616c3e0d0a0909093c2f53656e64657244657461696c733e0d0a0909093c50617469656e7444657461696c733e0d0a090909093c4348494e756d6265723e303230323030323136303c2f4348494e756d6265723e0d0a090909093c4e616d653e0d0a09090909093c5469746c653e4d6973733c2f5469746c653e0d0a09090909093c46616d696c794e616d653e477265656e3c2f46616d696c794e616d653e0d0a09090909093c476976656e4e616d653e436c616972653c2f476976656e4e616d653e0d0a090909093c2f4e616d653e0d0a090909093c416464726573733e0d0a09090909093c416464726573734c696e65733e0d0a0909090909093c416464726573734c696e653e3330204e6f72746820526f61643c2f416464726573734c696e653e0d0a0909090909093c416464726573734c696e653e45617374766965773c2f416464726573734c696e653e0d0a09090909093c2f416464726573734c696e65733e0d0a09090909093c506f7374436f64653e443434203444443c2f506f7374436f64653e0d0a09090909093c54656c6570686f6e654e6f3e3031333333203938373635343c2f54656c6570686f6e654e6f3e0d0a090909093c2f416464726573733e0d0a090909093c446174654f6642697274683e323030322d30322d30323c2f446174654f6642697274683e0d0a090909093c5365783e663c2f5365783e0d0a0909093c2f50617469656e7444657461696c733e0d0a0909093c4578656d7074696f6e44657461696c733e0d0a090909093c4578656d7074696f6e436f64653e413c2f4578656d7074696f6e436f64653e0d0a090909093c4578656d7074696f6e546578743e556e646572203136207965617273206f66206167653c2f4578656d7074696f6e546578743e0d0a090909093c45766964656e63655365656e3e66616c73653c2f45766964656e63655365656e3e0d0a0909093c2f4578656d7074696f6e44657461696c733e0d0a0909093c5265675265717565737444657461696c733e0d0a090909093c466f726d547970653e4350323c2f466f726d547970653e0d0a090909093c5265675265717565737449443e5245353637384e554d42455252414e383c2f5265675265717565737449443e0d0a090909093c52656753746172744461746554696d653e323030342d31312d33305430393a33303a34373c2f52656753746172744461746554696d653e0d0a090909093c436c696e6963616c536572766963653e4d41533c2f436c696e6963616c536572766963653e0d0a090909093c5265675374617475735265717565737465643e72656769737465723c2f5265675374617475735265717565737465643e0d0a0909093c2f5265675265717565737444657461696c733e0d0a09093c2f526567697374726174696f6e526571756573743e0d0a093c2f417070426f646965733e0d0a3c2f526567697374726174696f6e52657175657374456e763e0d0a'''.
2005-11-29 13:47:14.413392 2940 UserTrace BIP2539I: Node 'TimerFLow.Iterate for Pending': Evaluating expression ''InputRoot.MQMD.Encoding'' at ('.TimerFlow_IterateforPending.Main', '31.65'). This resolved to ''InputRoot.MQMD.Encoding''. The result was ''546''.
2005-11-29 13:47:14.413443 2940 UserTrace BIP2539I: Node 'TimerFLow.Iterate for Pending': Evaluating expression ''InputRoot.MQMD.CodedCharSetId'' at ('.TimerFlow_IterateforPending.Main', '31.90'). This resolved to ''InputRoot.MQMD.CodedCharSetId''. The result was ''437''.
I am now thinking that maybe the BLOB data is being truncated. I'm at home now but I could investigate this tomorrow. |
|
Back to top |
|
 |
tiredandconfused |
Posted: Tue Nov 29, 2005 2:52 pm Post subject: |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
Just looking at my last post and it looks like my trace data has been truncated by posting in the forum. In reality the hex data goes on for much longer and ends like this ;
more data63e0d0a'''. |
|
Back to top |
|
 |
tiredandconfused |
Posted: Tue Nov 29, 2005 2:55 pm Post subject: |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
BTW, that last full stop wasnt mine. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Nov 29, 2005 7:15 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
The good news is that it is actually finding your BLOB data correctly, you aren't passing in a NULL value to CREATE.
So likely then the XML is not parsing, and something is causing the parse error to be hidden. Perhaps the blob data contains an embedded NULL somewhere.
Another possibility is that your BLOB data is not actually in the CCSID that you are claiming it is. And I'm not up for checking that right now, by trying to unpack the blob into bytes and seeing what it looks like. I used to have some good perl code for doing that (the very helpfully named unpack is very helpful). But I haven't actively tried to debug messages at this level in a couple of years... so recreating that code is left as an exercise...  _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
tiredandconfused |
Posted: Wed Nov 30, 2005 1:57 am Post subject: |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
Thanks for the pointers. I'm not going to be able to retry this until Thursday so I'll post the results then. |
|
Back to top |
|
 |
tiredandconfused |
Posted: Mon Dec 19, 2005 4:25 am Post subject: |
|
|
Newbie
Joined: 29 Nov 2005 Posts: 7
|
Hi Jeff,
Sorry for the delay, but just to let you know that the CREATE statement was in fact working perfectly, the error was caused by the MQMD Format being set incorrectly.
Thanks for your comments. |
|
Back to top |
|
 |
|