Posted: Thu Nov 10, 2005 6:20 am Post subject: How to get queue manager to invalidate dead connections?
Newbie
Joined: 09 Nov 2005 Posts: 1
First some preliminaries. I'm using version 3.3 of the MQ client libraries on a Debian Linux 3.1 system. The version of MQ server I'm using is also 3.3, and that is running on a Mandrake 8.1 system.
I am MQGET()'ing messages from a queue. I have the MQGMO_SYNCPOINT option specified, so these messages are not permanently removed from the queue unless I do an explicit MQCMIT(). Messages are placed onto the queue with the MQPER_PERSISTENT option set so that messages will survive a restart of the queue manager.
The problem I have come across is the following. When I kill the network connection (via pulling the ethernet plug) between the client and the server before the MQCMIT() call is made, I would expect that the message that was just dequeued to be available again when I restore the network connection since the queue manager never got the command to do a commit. However, the message is not. I've noticed that the message does not become available again until I restart the queue manager.
Examining the status of the queue using the "runmqsc" when I kill the network connection, I noticed that the queue manager still maintains an open handle on the queue. (Doing a DISPLAY QSTATUS on the queue shows that the IPPROCS attribute is greater than 0). I believe that this is the source of the problem.
Is there a way to force the queue manager to invalidate the handle right away when the network connection between the client and the server goes down?
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