ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Touched the boundary of code reusability in WBIMB Toolkit?

Post new topic  Reply to topic
 Touched the boundary of code reusability in WBIMB Toolkit? « View previous topic :: View next topic » 
Author Message
DaveCanto
PostPosted: Tue Nov 08, 2011 7:33 am    Post subject: Touched the boundary of code reusability in WBIMB Toolkit? Reply with quote

Novice

Joined: 01 Feb 2008
Posts: 11
Location: Belgium - EU

Hi,

Recently our newly deployed messageflows started acting strange. In debug mode, we always get the following exception when a message passes through a messageflow:

"String '%1' is not of the correct form to cast to bool"

Our messageflows make use of some commonly used subflows for exception handling, archiving and logging which are stored in separate messageflow projects grouped together in our own 'framework' for broker developments.

Once a message goes into such a subflow, this exception is already thrown when touching a compute node in that subflow without executing any logic from that compute node. I was able to see this behaviour in the debug mode.

Our subflows make use of a couple of external variables, promoted and user-defined properties. I have a feeling that above's exception might have something to do with these.

I already tried to build, deploy and test our messageflows in a clean workspace on my own workstation and on another workstation as well.

I get the feeling that something went corrupt somewhere in our subflows, but I cannot find out where and why? Are we touching the boundaries here of code/logic reusability in IBM's Message Broker Toolkit v6.1.0.8?

Your help is much appreciated!
_________________
Do not underestimate the power of ... unit testing and continuous integration.
Back to top
View user's profile Send private message Visit poster's website
fjb_saper
PostPosted: Tue Nov 08, 2011 7:44 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Have you tried following on the flows?
Recompile (including sub-flows), rebuild (bar file), redeploy?
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
mqjeff
PostPosted: Tue Nov 08, 2011 7:51 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Are you using some process during deployment to set or update UDPs and promoted properties on flows? Perhaps this is inserting an incorrect value into a property - like "one" instead of 1 or 'true' instead of true - into a field?

it's clearly a field that is supposed to hold a Boolean value.
Back to top
View user's profile Send private message
vmcgloin
PostPosted: Tue Nov 08, 2011 12:18 pm    Post subject: Reply with quote

Knight

Joined: 04 Apr 2002
Posts: 560
Location: Scotland

Your description implies that you do not know which string is failing to be cast to a boolean. Is this the case? Does the debugger (or system log when not in debug) not show the details? If not I would turn to trace.

Also, I suspect that you are looking too deep into this and your subflows etc are not in themselves the problem - more likely as better minds than mine have pointed out - you just have a configuration problem during deployment.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Tue Nov 08, 2011 12:25 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

vmcgloin wrote:
as better minds than mine have pointed out

noisier, maybe.
Back to top
View user's profile Send private message
DaveCanto
PostPosted: Wed Nov 09, 2011 7:54 am    Post subject: Reply with quote

Novice

Joined: 01 Feb 2008
Posts: 11
Location: Belgium - EU

Thanks for your quick replies, gents.

Quote:
Have you tried following on the flows?
Recompile (including sub-flows), rebuild (bar file), redeploy?

Yes, I did several clean operations, rebuilds and redeploys already and even started a new workspace from the toolkit.

Quote:
Are you using some process during deployment to set or update UDPs and promoted properties on flows? Perhaps this is inserting an incorrect value into a property - like "one" instead of 1 or 'true' instead of true - into a field?

No, we don't use any automated process to create bar-files. Those are created from the developer's toolkits only.

Quote:
Your description implies that you do not know which string is failing to be cast to a boolean. Is this the case? Does the debugger (or system log when not in debug) not show the details? If not I would turn to trace.

Yes, that's right. Both debugger and usertrace (see below) show the same exception. I have a feeling that the bar-file (after building it) still contains some kind of reference to a promoted property or user-defined property which I've created in the past and removed afterwards.

I'm going to investigate the actual bar-file which is sitting on my harddrive to find out if it has some trace of that previously created external variable somewhere. If you have any kind of tips or tools to help me with my investigation, please feel free to post them here. Thank you.

This is the actual exception which is causing me troubles:

Code:

Error casting character string '''''' to boolean.
The character string had the value ''''''. Only the character strings 'TRUE', 'FALSE', and 'UNKNOWN' can be cast to booleans.
Ensure that the character string being cast has one of the above values.


You can also see it in today's usertrace:

Code:

2011-11-09 10:23:04.889774     3016   UserTrace   BIP4040I: The Execution Group ''ACCB'' has processed a configuration message successfully.
                                       A configuration message has been processed successfully. Any configuration changes have been made and stored persistently.
                                       No user action required.
2011-11-09 10:23:04.890221     3016   UserTrace   BIP2638I: The MQ output node 'ConfigurationMessageFlow.outputNode' attempted to write a message to queue ''SYSTEM.BROKER.EXECUTIONGROUP.REPLY'' connected to queue manager ''WBRK_DEV.00''. The MQCC was '0' and the MQRC was '0'.
2011-11-09 10:23:04.890240     3016   UserTrace   BIP2622I: Message successfully output by output node 'ConfigurationMessageFlow.outputNode' to queue ''SYSTEM.BROKER.EXECUTIONGROUP.REPLY'' on queue manager ''WBRK_DEV.00''.
2011-11-09 10:23:18.075300     1052   UserTrace   BIP2632I: Message received and propagated to 'out' terminal of MQ input node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ'.
2011-11-09 10:23:18.075439     1052   UserTrace   BIP6060I: Parser type ''Properties'' created on behalf of node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ' to handle portion of incoming message of length 0 bytes beginning at offset '0'.
2011-11-09 10:23:18.075485     1052   UserTrace   BIP6061I: Parser type ''MQMD'' created on behalf of node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ' to handle portion of incoming message of length '364' bytes beginning at offset '0'. Parser type selected based on value ''MQHMD'' from previous parser.
2011-11-09 10:23:18.076467     1052   UserTrace   BIP6061I: Parser type ''BLOB'' created on behalf of node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ' to handle portion of incoming message of length '2696' bytes beginning at offset '364'. Parser type selected based on value ''NONE'' from previous parser.
2011-11-09 10:23:18.230699     1052   UserTrace   BIP4201I: Message propagated to out terminal from node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.ResetContentDescriptor'.
                                       A reset content descriptor node has received a message and is propagating it to any nodes connected to its out terminal.
                                       No user action required.
2011-11-09 10:23:21.430774     1052   UserTrace   BIP4007I: Message propagated to 'out' terminal of node 'I001_PO.ACCB_I001_BO_PO_VISA.Map to VISA format'.
2011-11-09 10:23:21.464204     1052   UserTrace   BIP2231E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ'.
                                       The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ'. The message has been augmented with an exception list and has been propagated to the node's failure terminal for further processing.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.464235     1052   RecoverableException  BIP2230E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.Map to VISA format'.
                                       The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.Map to VISA format'. An exception has been thrown to cut short the processing of the message.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.464246     1052   RecoverableException  BIP2488E:  ('I001_PO.ACCB_I001_BO_PO_VISA_Compute.Main', '143.3') Error detected whilst executing the SQL statement ''PROPAGATE FINALIZE DEFAULT DELETE DEFAULT;''.
                                       The message broker detected an error whilst executing the given statement. An exception has been thrown to cut short the SQL program.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.464254     1052   RecoverableException  BIP2230E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_LOG.01.SetExpiry'.
                                       The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_LOG.01.SetExpiry'. An exception has been thrown to cut short the processing of the message.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.464263     1052   RecoverableException  BIP2455E: Error casting character string '''''' to boolean.
                                       The character string had the value ''''''. Only the character strings 'TRUE', 'FALSE', and 'UNKNOWN' can be cast to booleans.
                                       Ensure that the character string being cast has one of the above values.
2011-11-09 10:23:21.582916     1052   Error       BIP2232E: Error detected whilst handling a previous error in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.WBIMB_COMMON_TRACE_ERR.IsError'.
                                       The message broker has detected an error in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.WBIMB_COMMON_TRACE_ERR.IsError' whilst handling a previous error.
                                       See the following messages for details of the exception list associated with the original error.  Thereafter messages will be associated with the new error.
2011-11-09 10:23:21.582956     1052   RecoverableException  BIP2230E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.Map to VISA format'.
                                       The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.Map to VISA format'. An exception has been thrown to cut short the processing of the message.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.582973     1052   RecoverableException  BIP2488E:  ('I001_PO.ACCB_I001_BO_PO_VISA_Compute.Main', '143.3') Error detected whilst executing the SQL statement ''PROPAGATE FINALIZE DEFAULT DELETE DEFAULT;''.
                                       The message broker detected an error whilst executing the given statement. An exception has been thrown to cut short the SQL program.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.582983     1052   RecoverableException  BIP2230E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_LOG.01.SetExpiry'.
                                       The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_LOG.01.SetExpiry'. An exception has been thrown to cut short the processing of the message.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.582992     1052   RecoverableException  BIP2455E: Error casting character string '''''' to boolean.
                                       The character string had the value ''''''. Only the character strings 'TRUE', 'FALSE', and 'UNKNOWN' can be cast to booleans.
                                       Ensure that the character string being cast has one of the above values.
2011-11-09 10:23:21.583301     1052   Error       BIP2628E: Exception condition detected on input node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ'.
                                       The input node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ' detected an error whilst processing a message.  The message flow has been rolled-back and, if the message was being processed in a unit of work, it will remain on the input queue to be processed again.  Following messages will indicate the cause of this exception.
                                       Check the error messages which follow to determine why the exception was generated, and take action as described by those messages.
2011-11-09 10:23:21.583316     1052   RecoverableException  BIP2230E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.WBIMB_COMMON_TRACE_ERR.IsError'.
                                       The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.WBIMB_COMMON_TRACE_ERR.IsError'. An exception has been thrown to cut short the processing of the message.
                                       See the following messages for details of the error.
2011-11-09 10:23:21.583324     1052   RecoverableException  BIP2455E: Error casting character string '''''' to boolean.
                                       The character string had the value ''''''. Only the character strings 'TRUE', 'FALSE', and 'UNKNOWN' can be cast to booleans.
                                       Ensure that the character string being cast has one of the above values.
2011-11-09 10:23:22.622575     1052   UserTrace   BIP2631I: Backed out message being propagated to failure terminal; node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ'.
                                       Node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.InputQ' has received a message which has previously been backed out because of a processing error in the message flow.  The MQMD 'backoutCount' of the message exceeds (or equals) the 'backoutThreshold' defined for the WebSphere MQ input queue.  The message broker is propagating the message to the failure terminal of the node.
                                       Examine the other messages and the message flow to determine why the message is being backed out.  Correct this situation if possible.  Perform any local error recovery processing required.
2011-11-09 10:23:22.625274     1052   UserTrace   BIP2638I: The MQ output node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.FailureQ' attempted to write a message to queue ''AQ.ACCB.I001_BO_PO_VISA_FAILURE.01'' connected to queue manager ''''. The MQCC was '0' and the MQRC was '0'.
2011-11-09 10:23:22.625297     1052   UserTrace   BIP2622I: Message successfully output by output node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_VISA.01.FailureQ' to queue ''AQ.ACCB.I001_BO_PO_VISA_FAILURE.01'' on queue manager ''''.
2011-11-09 10:24:26.491039     3016   UserTrace   BIP2632I: Message received and propagated to 'out' terminal of MQ input node 'ConfigurationMessageFlow.InputNode'.
2011-11-09 10:24:26.491161     3016   UserTrace   BIP6060I: Parser type ''Properties'' created on behalf of node 'ConfigurationMessageFlow.InputNode' to handle portion of incoming message of length 0 bytes beginning at offset '0'.
2011-11-09 10:24:26.491195     3016   UserTrace   BIP6061I: Parser type ''MQMD'' created on behalf of node 'ConfigurationMessageFlow.InputNode' to handle portion of incoming message of length '364' bytes beginning at offset '0'. Parser type selected based on value ''MQHMD'' from previous parser.
2011-11-09 10:24:26.491289     3016   UserTrace   BIP6061I: Parser type ''XMLS'' created on behalf of node 'ConfigurationMessageFlow.InputNode' to handle portion of incoming message of length '229' bytes beginning at offset '364'. Parser type selected based on value ''XMLS'' from previous parser.

_________________
Do not underestimate the power of ... unit testing and continuous integration.
Back to top
View user's profile Send private message Visit poster's website
marko.pitkanen
PostPosted: Wed Nov 09, 2011 11:00 am    Post subject: Reply with quote

Chevalier

Joined: 23 Jul 2008
Posts: 440
Location: Jamsa, Finland

Hi,

Have you tried to create a totally new bar file?
Can you get also debug level user trace out?

--
Marko
Back to top
View user's profile Send private message Visit poster's website
mqjeff
PostPosted: Wed Nov 09, 2011 11:05 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

So here is the problem:
Quote:
2011-11-09 10:23:21.582983 1052 RecoverableException BIP2230E: Error detected whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_LOG.01.SetExpiry'.
The message broker detected an error whilst processing a message in node 'I001_PO.ACCB_I001_BO_PO_VISA.AQ.ACCB.I001_BO_PO_LOG.01.SetExpiry'. An exception has been thrown to cut short the processing of the message.
See the following messages for details of the error.
2011-11-09 10:23:21.582992 1052 RecoverableException BIP2455E: Error casting character string '''''' to boolean.
The character string had the value ''''''. Only the character strings 'TRUE', 'FALSE', and 'UNKNOWN' can be cast to booleans.
Ensure that the character string being cast has one of the above values.


So look at the properties of the SetExpiry node.
Back to top
View user's profile Send private message
rekarm01
PostPosted: Thu Nov 10, 2011 1:07 am    Post subject: Re: Touched the boundary of code reusability in WBIMB Toolki Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 1415

DaveCanto wrote:
You can also see it in today's usertrace:
Code:
...

Is that a debug-level usertrace, or a normal-level usertrace? It seems like there should be more detail there.

It might also be useful to add a Trace node between the 'Map to VISA format' and 'SetExpiry' nodes, to determine if there's a boolean element in the message that doesn't have a value.
Back to top
View user's profile Send private message
DaveCanto
PostPosted: Thu Nov 10, 2011 1:55 am    Post subject: Reply with quote

Novice

Joined: 01 Feb 2008
Posts: 11
Location: Belgium - EU

It's a normal usertrace, not a debug one. I'm sorry for that.

Actually I finally found the rootcause of this exception. I'm using 2 messageflow projects:
- 'MSF_atlascopco_ACCB_MESSAGING_v3_0' (ACCB) containing 'ACCB_I001_BO_PO_VISA.msgflow'
- 'MSF_atlascopco_WBIMB_COMMON' (COMMON) containing 'SF_Input.msgflow' and some other common subflows used in various messageflow projects

ACCB has a project reference to COMMON, because it's using the subflow 'SF_Input'. When browsing over the other reusable components in COMMON, I detected that there was a subflow called 'SF_Input_CustomErrors' containing unfinished source code (an incorrect definition of an external variable):

Code:

DECLARE TruncateMsg EXTERNAL BOOLEAN '';


which should have been

Code:

DECLARE TruncateMsg EXTERNAL BOOLEAN FALSE;   


Here we have our failing cast from string to bool! I really looked over it, as I was not aware that 'SF_Input_CustomErrors' was even involved in my messageflow, only using 'SF_Input'. Normally it isn't, but because my messageflow has a reference to COMMON and 'TruncateMsg' is an external variable with a larger scope than a normal variable, my deployed bar-file knew about that incorrect defined external variable which caused an exception almost immediately after a new message entered my messageflow.

Lessons learned and we are going to be very careful next time when using external variables again in our future developments!

Anyway thanks for your help on this topic. Much appreciated!
_________________
Do not underestimate the power of ... unit testing and continuous integration.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Touched the boundary of code reusability in WBIMB Toolkit?
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.