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 » Error Handler Issue

Post new topic  Reply to topic
 Error Handler Issue « View previous topic :: View next topic » 
Author Message
latitude
PostPosted: Tue Aug 25, 2009 3:55 am    Post subject: Error Handler Issue Reply with quote

Apprentice

Joined: 17 Aug 2009
Posts: 36

All,

Im having a little trouble with the following code and wonder if anyone could spot the issue please. I’m working with an error handler and using the following ESQL procedure. When I get the EXCEPTION 1, it works properly and generates the outgoing message as per the code but when the EXCEPTION 2 occurs, error handler fails and generates EXCEPTION 3.

Thanks

Quote:
CREATE PROCEDURE ErrorConstructor() BEGIN
DECLARE Error INTEGER;
DECLARE Text CHARACTER;
DECLARE Place INTEGER;
DECLARE LastPlace INTEGER;
DECLARE NodeName CHARACTER;
DECLARE Label CHARACTER;
DECLARE FlowName CHARACTER;
DECLARE start REFERENCE TO InputExceptionList.*[1];

WHILE start.Number IS NOT NULL DO
SET Error = start.Number;
IF Error >= 6000 THEN
SET Text = SUBSTRING(start.Insert.Text FROM 1 FOR 250);

ELSE
SET Text = SUBSTRING(start.Text FROM 1 FOR 250);
END IF;


SET Label = start.Label;
SET Place = POSITION('.' IN Label);
SET LastPlace = Place;
WHILE Place <> 0 DO
SET Label=SUBSTRING(Label FROM (Place+1));
SET Place=POSITION('.' IN Label);
SET LastPlace = LastPlace + Place;
END WHILE;
SET Label=start.Label;
SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
SET NodeName=SUBSTRING(Label FROM (LastPlace+1));

MOVE start LASTCHILD;
END WHILE;

-- Construct outgoing error message
SET OutputRoot.MQMD = InputRoot.MQMD;
SET OutputRoot.XMLNSC.ValidationError.ErrorOccuredAt = CURRENT_TIMESTAMP;
SET OutputRoot.XMLNSC.ValidationError.MessageId = InputRoot.MQMD.MsgId;
SET OutputRoot.XMLNSC.ValidationError.NodeName = NodeName;
SET OutputRoot.XMLNSC.ValidationError.FlowName = FlowName;
SET OutputRoot.XMLNSC.ValidationError.ErrorNumber = Error;
SET OutputRoot.XMLNSC.ValidationError.ErrorMessage = Text;


END;


EXCEPTION 1

Quote:
ExceptionList
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbFilterNode.cpp
Line:INTEGER:285
Function:CHARACTER:ImbFilterNode::evaluate
Type:CHARACTER:ComIbmFilterNode
Name:CHARACTER:MyFlow#FCMComposite_1_5
Label:CHARACTER:MyFlow.InputMessageValidator
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Caught exception and rethrowing
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp
Line:INTEGER:602
Function:CHARACTER:SqlStatementGroup::execute
Type:CHARACTER:ComIbmFilterNode
Name:CHARACTER:MyFlow#FCMComposite_1_5
Label:CHARACTER:MyFlow.InputMessageValidator
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2488
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:.MyFlow_InputMessageValidator.Main
Insert
Type:INTEGER:5
Text:CHARACTER:22.8
Insert
Type:INTEGER:5
Text:CHARACTER:THROW EXCEPTION CATALOG 'Validation Error' MESSAGE 7000 VALUES( 'Please check the Field A. It is a mandotory field');
UserException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlThrowExceptionStatements.cpp
Line:INTEGER:224
Function:CHARACTER:SqlThrowExceptionStatement::execute
Type:CHARACTER:ComIbmFilterNode
Name:CHARACTER:MyFlow#FCMComposite_1_5
Label:CHARACTER:MyFlow.InputMessageValidator
Catalog:CHARACTER:Validation Error
Severity:INTEGER:1
Number:INTEGER:7000
Text:CHARACTER:User generated exception
Insert
Type:INTEGER:5
Text:CHARACTER:Please check the Field A. It is a mandotory field




EXCEPTION 2

Quote:
ExceptionList
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbDataFlowNode.cpp
Line:INTEGER:957
Function:CHARACTER:ImbDataFlowNode::createExceptionList
Type:CHARACTER:ComIbmTryCatchNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_2
Label:CHARACTER:MyFlow.ErrorHandler.TryCatch
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Node throwing exception
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbComputeNode.cpp
Line:INTEGER:464
Function:CHARACTER:ImbComputeNode::evaluate
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_20.ComIbmMapping#FCMComposite_1_1
Label:CHARACTER:MyFlow.Mapping.ComIbmCompute
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Caught exception and rethrowing
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp
Line:INTEGER:602
Function:CHARACTER:SqlStatementGroup::execute
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_20.ComIbmMapping#FCMComposite_1_1
Label:CHARACTER:MyFlow.Mapping.ComIbmCompute
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2488
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:.IBM_WBIMB_MyFlow_Mapping.MAIN
Insert
Type:INTEGER:5
Text:CHARACTER:3.1
Insert
Type:INTEGER:5
Text:CHARACTER:MyFlow_Mapping(InputRoot, OutputRoot, InputLocalEnvironment, OutputLocalEnvironment);
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlRoutine.cpp
Line:INTEGER:548
Function:CHARACTER:SqlRoutine::invoke
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_20.ComIbmMapping#FCMComposite_1_1
Label:CHARACTER:MyFlow.Mapping.ComIbmCompute
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2934
Text:CHARACTER:Error occured in procedure
Insert
Type:INTEGER:5
Text:CHARACTER:MyFlow_Mapping
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp
Line:INTEGER:602
Function:CHARACTER:SqlStatementGroup::execute
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_20.ComIbmMapping#FCMComposite_1_1
Label:CHARACTER:MyFlow.Mapping.ComIbmCompute
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2488
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:.MyFlow_Mapping
Insert
Type:INTEGER:5
Text:CHARACTER:194.2
Insert
Type:INTEGER:5
Text:CHARACTER:PROPAGATE FINALIZE DEFAULT DELETE DEFAULT;
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/TemplateNodes/ImbRequestTemplateNode.cpp
Line:INTEGER:417
Function:CHARACTER:ImbRequestTemplateNode::processMessageAssemblyToFailure
Type:CHARACTER:ImbRequestTemplateNode
Name:CHARACTER:MyFlow#FCMComposite_1_28.#FCMComposite_1_1.gen/#FCMComposite_1_1
Label:CHARACTER:MyFlow.WebServiceAPI.Request
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Caught exception and rethrowing
RecoverableException
File:CHARACTER:/build/S610_P/src/WebServices/WSLibrary/ImbSOAPRequestNode.cpp
Line:INTEGER:2148
Function:CHARACTER:ImbSOAPRequestNode::logWebServiceInvocationException
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPv610
Severity:INTEGER:1
Number:INTEGER:3162
Text:CHARACTER:WebService Request Exception
Insert
Type:INTEGER:12
Text:CHARACTER:436f6e74656e742d4c656e6774683a203832360d0a436f6e74657373696e672e636f6d2f417574686f726973650d0a436f6e6e656374696f6e3a206b6565702d616c6976650d0a0d0a
Insert
Type:INTEGER:12
Text:CHARACTER:3c3f786d6c2076657273696f6e3d22312e302220656e636f64313a417574686f726973653e3c2f736f6170656e763a426f64793e3c2f736f6170656e763a456e76656c6f70653e
Insert
Type:INTEGER:5
Text:CHARACTER:
Insert
Type:INTEGER:5
Text:CHARACTER:
Insert
Type:INTEGER:5
Text:CHARACTER:POST /webservice.asmx HTTP/1.1

RecoverableException
File:CHARACTER:/build/S610_P/src/WebServices/WSLibrary/ImbWSRequest.cpp
Line:INTEGER:546
Function:CHARACTER:ImbWSRequest::makeWSRequest
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPv610
Severity:INTEGER:1
Number:INTEGER:3152
Text:CHARACTER:A Web Service request has detected a SOCKET error whilst invoking a web service located at host &1, on port &2, on path &3.
Insert
Type:INTEGER:5
Text:CHARACTER:10.1.1.10
Insert
Type:INTEGER:2
Text:CHARACTER:80
Insert
Type:INTEGER:5
Text:CHARACTER:/webservice.asmx
SocketTimeoutException
File:CHARACTER:/build/S610_P/src/CommonServices/ImbBasicSocket.cpp
Line:INTEGER:464
Function:CHARACTER:ImbBasicSocket::connectTimeout
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPv610
Severity:INTEGER:1
Number:INTEGER:3151
Text:CHARACTER:A timeout occurred whilst performing a socket operation
Insert
Type:INTEGER:5
Text:CHARACTER:::connect()
Insert
Type:INTEGER:2
Text:CHARACTER:0
Insert
Type:INTEGER:14
Text:CHARACTER:Success
Insert
Type:INTEGER:2
Text:CHARACTER:121



EXCEPTION 3


Quote:
ExceptionList
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbDataFlowNode.cpp
Line:INTEGER:957
Function:CHARACTER:ImbDataFlowNode::createExceptionList
Type:CHARACTER:ComIbmTryCatchNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_2
Label:CHARACTER:MyFlow.ErrorHandler.TryCatch
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Node throwing exception
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbComputeNode.cpp
Line:INTEGER:464
Function:CHARACTER:ImbComputeNode::evaluate
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_3
Label:CHARACTER:MyFlow.ErrorHandler.ErrorConstructor
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Caught exception and rethrowing
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp
Line:INTEGER:602
Function:CHARACTER:SqlStatementGroup::execute
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_3
Label:CHARACTER:MyFlow.ErrorHandler.ErrorConstructor
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2488
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:.ErrorHandler_ErrorConstructor_Compute.Main
Insert
Type:INTEGER:5
Text:CHARACTER:4.3
Insert
Type:INTEGER:5
Text:CHARACTER:ErrorConstructor();
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlRoutine.cpp
Line:INTEGER:548
Function:CHARACTER:SqlRoutine::invoke
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_3
Label:CHARACTER:MyFlow.ErrorHandler.ErrorConstructor
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2934
Text:CHARACTER:Error occured in procedure
Insert
Type:INTEGER:5
Text:CHARACTER:ErrorConstructor
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp
Line:INTEGER:602
Function:CHARACTER:SqlStatementGroup::execute
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_3
Label:CHARACTER:MyFlow.ErrorHandler.ErrorConstructor
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2488
Text:CHARACTER:Error detected, rethrowing
Insert
Type:INTEGER:5
Text:CHARACTER:.ErrorHandler_ErrorConstructor_Compute.ErrorConstructor
Insert
Type:INTEGER:5
Text:CHARACTER:32.4
Insert
Type:INTEGER:5
Text:CHARACTER:SET FlowName = SUBSTRING(Label FROM 1 FOR LastPlace - 1);
RecoverableException
File:CHARACTER:/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStringFunctions.cpp
Line:INTEGER:2176
Function:CHARACTER:SqlSubstringBaseFnCall::evaluate
Type:CHARACTER:ComIbmComputeNode
Name:CHARACTER:MyFlow#FCMComposite_1_4.ErrorHandler#FCMComposite_1_3
Label:CHARACTER:MyFlow.ErrorHandler.ErrorConstructor
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2499
Text:CHARACTER:Illegal arguments for SUBSTRING functions
Insert
Type:INTEGER:5
Text:CHARACTER:.ErrorHandler_ErrorConstructor_Compute.ErrorConstructor
Insert
Type:INTEGER:5
Text:CHARACTER:32.17
Insert
Type:INTEGER:5
Text:CHARACTER:SUBSTRING('' FROM 1 FOR -1)
Back to top
View user's profile Send private message
Luke
PostPosted: Tue Aug 25, 2009 4:17 am    Post subject: Reply with quote

Centurion

Joined: 10 Nov 2008
Posts: 128
Location: UK

Quote:
Illegal arguments for SUBSTRING functions

Quote:
Text:CHARACTER:SUBSTRING('' FROM 1 FOR -1)


Presumably caused by
Quote:
SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
Back to top
View user's profile Send private message
latitude
PostPosted: Tue Aug 25, 2009 4:44 am    Post subject: Reply with quote

Apprentice

Joined: 17 Aug 2009
Posts: 36

Thanks for the prompt reply Luke. Yes i noticed that but why does it fail only on this exception.It works with all the other once. For some reason it fails on the Lebel variable.

Quote:
SET Label = start.Label;
SET Place = POSITION('.' IN Label);
SET LastPlace = Place;
WHILE Place <> 0 DO
SET Label=SUBSTRING(Label FROM (Place+1));
SET Place=POSITION('.' IN Label);
SET LastPlace = LastPlace + Place;
END WHILE;
SET Label=start.Label;
SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
SET NodeName=SUBSTRING(Label FROM (LastPlace+1));


As per the error
Quote:
Text:CHARACTER:SUBSTRING('' FROM 1 FOR -1)
first variable is NULL and the last one is -1. It seams that the variable value is NULL. Any ideas?
Back to top
View user's profile Send private message
Luke
PostPosted: Tue Aug 25, 2009 4:59 am    Post subject: Reply with quote

Centurion

Joined: 10 Nov 2008
Posts: 128
Location: UK

Hi,

It's not really possible to do that level of debugging remotely ...

I'd run a trace if I were you, see what happens in the case where it goes wrong.

I'd guess you've navigated somewhere in the tree where one of the fields your code expects isn't there ...

If I'm doing that kind of dynamic moving around a tree, my personal preference is to use LASTMOVE to ensure a reference has been moved correctly e.g. WHILE LASTMOVE(reference) DO ... up to you how you code it of course, but that's what usually works well for me.

Good Luck
Back to top
View user's profile Send private message
latitude
PostPosted: Tue Aug 25, 2009 5:25 am    Post subject: Reply with quote

Apprentice

Joined: 17 Aug 2009
Posts: 36

Luke, Can you please explain the use of WHILE LASTMOVE little in detail if possible.
Back to top
View user's profile Send private message
Luke
PostPosted: Tue Aug 25, 2009 5:41 am    Post subject: Reply with quote

Centurion

Joined: 10 Nov 2008
Posts: 128
Location: UK

LASTMOVE is a function that returns a boolean reflecting the success or otherwise of the last MOVE you did. Most commonly used with WHILE to do a loop. There's an example in the information center - check out the MOVE statement in there.

Also, seeing as you're looking at error handling, if you haven't seen it already it might be worth checking out this Redbook - 'WebSphere Message Broker V6, Best Practices Guide: Bullet Proofing Message Flows'. Might even be some example code in it I think ...
Back to top
View user's profile Send private message
somsayan
PostPosted: Wed Aug 26, 2009 1:01 am    Post subject: Reply with quote

Apprentice

Joined: 06 Apr 2007
Posts: 49

As per your code, the Label value turn out to be NULL.
It points to the label value just above the Text "A timeout occurred whilst performing a socket operation". Hence the position function returns a value of -1.

This results in the error for the error handling mechanism.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Error Handler Issue
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.