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 » General IBM MQ Support » How to make QSTATUS UNCOM(YES) while IPPROCS(0) OPPROCS(0)?

Post new topic  Reply to topic
 How to make QSTATUS UNCOM(YES) while IPPROCS(0) OPPROCS(0)? « View previous topic :: View next topic » 
Author Message
issac
PostPosted: Fri Aug 03, 2012 5:27 am    Post subject: How to make QSTATUS UNCOM(YES) while IPPROCS(0) OPPROCS(0)? Reply with quote

Disciple

Joined: 02 Oct 2008
Posts: 158
Location: Shanghai

Hello, again

Today I met with a problem in our production environment. WMQ V6.0.2.4 on AIX PPC64. Developers say they could not GET messages from a QL.

QSTATUS shows IPPROCS(0), OPPROCS(1), but TYPE(HANDLE) shows the OPPROCS(1) is actually a CLUSRCVR which I can prove to be still working by checkking LSTMSGTI of the CHS. So the application has actually created the UNCOM(YES) while leaving NO HANDLE at all over the QL.

Process of the application is WAS, which did not crash. It's still there which I can tell by ps -ef|grep java. Developers say they're accessing MQ by AXIS2. I tried myself to recreate the problem with the following code:



Code:
   private void process(String[] args) throws IllegalOptionValueException, UnknownOptionException, JMSException {
      this.parseCommandLineArguments(args);
      // --------------------------------------------------
      ProgressLog.progress_LV1("Connecting to the QMGR then creating a session...");
      MQQueueConnection conn = this.buildMQQueueConnection();
      Session jmsSession = conn.createSession(true, Session.SESSION_TRANSACTED);
      ProgressLog.progress_LV2("Session has been created as SESSION_TRANSACTED.");
      // ------------------------------------------------
      MQQueue queue = (MQQueue) jmsSession.createQueue("queue:///" + pstr("queue"));
      MessageProducer producer = jmsSession.createProducer(queue);
      TextMessage message = jmsSession.createTextMessage();
      message.setText("ACCESS JMS RESOURCE TEST");
      producer.send(message);
      ProgressLog.progress_LV2("Message sent to the Q successfully. ");
      // ---------------------------------------------
      //producer.close();
      ProgressLog.progress_LV2("The choice about PRODUCER_CLOSE has been made.");
      //jmsSession.commit();
      ProgressLog.progress_LV2("The choice about SESSION_COMMIT has been made.");
      //jmsSession.close();
      ProgressLog.progress_LV2("The choice about SESSION_CLOSE has been made.");
      ProgressLog.progress_LV2("The application will hang here for a very long time without the connection being closed.");
      Pauser.pauseThread(10000000);
      conn.close();
      ProgressLog.progress_LV2("The choice about CONNECTION_CLOSE has been made.");
   }


But it could only create UNCOM(YES) while still holding a HANDLE to the queue. What should I do to mimic this situation? That is to make QSTATUS UNCOM(YES) while IPPROCS(0) OPPROCS(0)?

Thank you in advance.
_________________
Bazinga!
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Sat Aug 04, 2012 6:47 am    Post subject: Reply with quote

Grand High Poobah

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

Relatively easy:
Create a transactional connection / session
send (put) a message to the queue
Kill the transactional process and its transaction manager... (or just the connection to WMQ)

You now have a ghost message:
Put (part of qdepth) but with no XA_prepare_commit and not visible:
dspmqtrn will not show it as there is not XA_prepare_commit so you cannot force commit or force rollback.
The application has no handle...and neither does the original TM...


Also in WAS watch out for transaction time outs... and how they affect JMS...

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
markt
PostPosted: Sat Aug 04, 2012 7:28 am    Post subject: Reply with quote

Knight

Joined: 14 May 2002
Posts: 508

CONN
OPEN
PUT(Sync)
CLOSE

leaves ipprocs/opprocs=0 and uncom(yes)

Transactions are scoped to connections, not objects so it won't get resolved one way or the other until the connection ends (DISC or abend)
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 » General IBM MQ Support » How to make QSTATUS UNCOM(YES) while IPPROCS(0) OPPROCS(0)?
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.