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 » Transaction problem with MQSI

Post new topic  Reply to topic
 Transaction problem with MQSI « View previous topic :: View next topic » 
Author Message
Galichet
PostPosted: Sun Jan 27, 2002 4:26 pm    Post subject: Reply with quote

Acolyte

Joined: 26 Jun 2001
Posts: 69
Location: Paris - France

Hi all,

I'm still having the following problem with MQSI (using MQSI 2.0.2 on AIX or NT)

I have a flow with 1 input Node (Queue IN) and two output nodes (Queue A and Queue B)
I want to send a message in the Queue CATCH if the MQPUT in Queue A or Queue B fails
If a problem occurs for Queue A, I don't want to have a message in Queue B
If a problem occurs for Queue B, I don't want to have a message in Queue A
If the message is not put in the Queue CATCH successfully, I want to have a message in the Queue FAILURE
If the message is successfully put in the Queue CATCH, I don't want a message in the Queue FAILURE

For this problem, to be sure to have a complete rollback for Queue A and B,
I have to generate a Throw node in my Catch Path
In that case, the Queue CATCH has to be with Transaction Mode = No

My problem now is how to know if the rollback has been generated by my
Throw Node or because the put in the Queue CATCH has failed...

I've thought to use Database Nodes:

In the catch path:
I store in a Table the msgid of my message (with Transaction mode = no)
Then I try to put my message in the Queue CATCH (Transaction Mode = No)
If the put is not successful I delete this record (Transaction Mode = No)
After that I call the Throw Node

In the Failure Path
I access the Database to verify if my msgid is stored
If it is stored, then I want to delete it (because I'm sure that a message
has been sent to the Queue CATCH) and nothing more (Transaction Mode = No)
If the msgid is not in the Database, I want to have a message in the Queue
FAILURE.

I have the following problem when a message cannot be put in the Queue A or
Queue B:
The first message in error works fine
--> One message in the Queue CATCH
--> No message in the Queue FAILURE
--> The msgid has been inserted and deleted in the Database
The second message in error is not processed well
--> No message in the Queue CATCH
--> One message in the queue FAILURE
--> no msgid inserted in the database ....

I've generated the following trace :

*******************************************************************************Insert DB error
(
(0x1000000)RecoverableException = (
(0x3000000)File
= 'F:/build/S202_P/src/DataFlowEngine/ImbDataFlowNode.cpp'
(0x3000000)Line = 538
(0x3000000)Function
= 'ImbDataFlowNode::createExceptionList'
(0x3000000)Type = 'ComIbmDatabaseNode'
(0x3000000)Name
= '9e1e0693-eb00-0000-0080-d7403b445807'
(0x3000000)Label = 'TEST_TRANSAC.Insert MSGID'
(0x3000000)Text = 'Node throwing exception'
(0x3000000)Catalog = 'MQSIv202'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)RecoverableException = (
(0x3000000)File
= 'F:/build/S202_P/src/DataFlowEngine/ImbDatabaseNode.cpp'
(0x3000000)Line = 251
(0x3000000)Function = 'ImbDatabaseNode::evaluate'
(0x3000000)Type = 'ComIbmDatabaseNode'
(0x3000000)Name = '9e1e0693-eb00-0000-0080-d7403b445807'
(0x3000000)Label = 'TEST_TRANSAC.Insert MSGID'
(0x3000000)Text = 'Node will cause a database commit, but an
active transaction is pending on the same connection'
(0x3000000)Catalog = 'MQSIv202'
(0x3000000)Severity = 1
(0x3000000)Number = 3901
)
)
)
*******************************************************************************

I don't understand why I have this error message ... I'm processing a new
message, for me it's a new flow and all the access to the database are with
Transaction Mode = no .... ???

Do you have an idea what to do ?

The table where I store my message contains one field called MSGID (VARCHAR 50)


If you have an idea, you're welcome

Thank you very much for your help


_________________
Eric Galichet
SMABTP
France
Back to top
View user's profile Send private message Send e-mail
Sandman
PostPosted: Wed Jan 30, 2002 1:09 pm    Post subject: Reply with quote

Centurion

Joined: 16 Oct 2001
Posts: 134
Location: Lincoln, RI

Have you considered just wiring the Failure terminal of your CATCH output queue to store the message in the FAILURE queue and just leave the Failure terminal of the MQInput node unwired?
Back to top
View user's profile Send private message Send e-mail
Galichet
PostPosted: Thu Jan 31, 2002 4:57 am    Post subject: Reply with quote

Acolyte

Joined: 26 Jun 2001
Posts: 69
Location: Paris - France

The problem is that I need to use the Catch path to retrieve the ExceptionList... The Catch Queue is used bye another flow to log and store in a database all the errors.
If I have only one output destination in my flow all works fine.
What do you think of the postit plugin node ?
If I setup something with the postit just before doing the throw in the Catch path, Do you think I can retrieve this information in the failure path ?

_________________
Eric Galichet
IBM Global Services
France

[ This Message was edited by: Galichet on 2002-01-31 04:58 ]
Back to top
View user's profile Send private message Send e-mail
Sandman
PostPosted: Thu Jan 31, 2002 2:17 pm    Post subject: Reply with quote

Centurion

Joined: 16 Oct 2001
Posts: 134
Location: Lincoln, RI

I still don't understand why you need the MQInput node's Failure terminal wired if it's only used to catch messages that couldn't be put to your CATCH queue - IOW, only when the Catch path's CATCH MQOutput node fails?

I haven't used the PostIt plugin, but we ARE using the WKSPACE parser which I believe does pretty much the same thing?
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Transaction problem with MQSI
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.